5.3.12 Hàm Hủy (Destructors) - CppDeveloper

Chúng ta có thể chống lại nguy cơ rò rỉ bộ nhớ bằng cách định nghĩa một hàm đặc biệt gọi là destructor.

Destructors có những hạn đặc điểm sau:

  • Nếu một class được đặt tên là X, destructor của nó được đặt tên là ~X
  • Một class chỉ có một destructor
  • Destructor phải là một hàm không có tham số
  • Một destructor không nên được gọi một cách tường minh

Ví dụ sau đây đưa một class từ trang trước, nhưng có một chút sửa đổi – chúng tôi đã thêm một destructor vào class đó. Destructor giải phóng bộ nhớ được cấp phát cho trường value, bảo vệ chúng ta khỏi bị rò rỉ bộ nhớ →

C++ #include <iostream> using namespace std; class Sample { public: Sample(int val) { value = new int[val]; cout << "Allocation (" << val << ") done." << endl; } ~Sample(void) { delete [] value; cout << "Deletion done." << endl; } int *value; }; void MakeALeak(void) { Sample object(1000); } int main(void) { MakeALeak(); return 0; }
12345678910111213141516171819202122232425 #include <iostream> usingnamespacestd; classSample{public:Sample(intval){value=newint[val];cout<<"Allocation ("<<val<<") done."<<endl;}~Sample(void){delete[]value;cout<<"Deletion done."<<endl;}int*value;}; voidMakeALeak(void){Sample object(1000);} intmain(void){MakeALeak();return0;}

khi biên dịch và chạy, hai dòng sau sẽ được xuất ra màn hình:

C++ Allocation (1000) done. Deletion done.
12 Allocation(1000)done.Deletion done.
  • c++ cơ bản
  • destructor
  • Hàm hủy
Trước đó

5.3.11 Rò rỉ bộ nhớ (Memory leaks)

Tiếp theo

5.4.1 Từ khóa “auto” (1)

Tìm kiếm cho:

Facebook Page

Ads

Forum

Facebook Group Cover Tham gia group

Bài viết mới

  • Ý nghĩa của Change-Id trong Gerrit Code Review

    Tháng Một 27, 2022 0
  • Android Automotive OS – Android based platform dành cho ô tô

    Tháng Một 19, 2022 0
  • Dùng song song 2 mạng Ethernet và Wifi trên Windows

    Tháng Chín 27, 2021 0
  • Một số cách convert number sang string trong C++

    Tháng Năm 7, 2021 0
  • Toán tử ‘typeid’ trong C++

    Tháng Ba 8, 2021 0
  • Bộ tiền xử lý – Preprocessor trong C/C++

    Tháng Mười Hai 28, 2020 0
  • Cùng tìm hiểu về Base64 encoding

    Tháng Mười Một 4, 2020 0

Chuyên mục

  • 4 TÍNH CHẤT CỦA OOP
  • BEST PRACTICES
  • C++ NÂNG CAO
  • CODE GYM
  • CTDL & GIẢI THUẬT
  • DESIGN PATTERNS
  • KIẾN THỨC TỔNG HỢP
  • LINUX / YOCTO / AOSP
  • TECH365
  • VISUAL STUDIO

Copyright © 2026 CppDeveloper by Phạm Minh Tuấn (SHUN)

Từ khóa » Hàm Hủy Trong Class C++