C++ 速查手冊
9.15 - 解構函數
解構函數 (destructor) 為程式結束執行銷毀物件之用,通常編譯器會提供預設的解構函數,可是當類別成員有指標的時候,就需要寫自己的解構函數,使其進行有效的記憶體管理。
舉例如下
#include <iostream>
class Demo {
public:
Demo(int pa) {
std::cout << "constructor" << std::endl;
a_ptr = new int;
*a_ptr = pa;
}
~Demo() {
std::cout << "destructor" << std::endl;
delete a_ptr;
}
void do_something() {
std::cout << *a_ptr << std::endl;
}
private:
int *a_ptr;
};
int main(void) {
Demo d(2048);
d.do_something();
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:u0915.cpp
功能:示範 C++ 的類別
作者:張凱慶*/
解構函數在第 11 行,用 ~ 符號表示解構函數,裡頭用 delete 刪除指標成員
~Demo() {
std::cout << "destructor" << std::endl;
delete a_ptr;
}
編譯執行,結果如下
$ g++ u0915.cpp |
$ ./a.out |
constructor |
2048 |
destructor |
$ |
相關教學影片