注:部落格中內容主要來自《狄泰軟體學院》,部落格僅當私人筆記使用。
測試環境:ubuntu 10.10
gcc版本:4.4.5
一、物件的銷毀
1)生活中的物件都是被初始化後才上市的
2)生活中的物件被銷毀前會做一些清理工作
問題:
c++中的如何清理需要銷毀的物件
3)一般而言,需要銷毀的物件都應該清理
4)解決方案
- 為每個類都提供乙個public的free函式
- 物件不再需要時立即呼叫free函式進行清理
class test
void free() ;
};
例項分析
intarray使用分析
main.cpp
#include #include "intarray.h"
int main()
~test()
};int main()
操作:
1) g++ 22-1.cpp -o 22-1.out編譯正確,列印結果:
test(): 1
test(): 2
~test(): 2
~test(): 1
程式設計實驗
intarray類的進行
intarray.cpp
#include "intarray.h"
intarray::intarray(int len)
{ m_pointer = new int[len];
for(int i=0; i分析:
類例項化過程中,在堆空間獲取記憶體,物件銷毀時呼叫析構函式釋放申請的堆空間。
3)析構函式的定義準則
當類中自定義了建構函式,並且建構函式中使用了系統資源(如:記憶體申請,檔案開啟,等),則需要自定義析構函式。
小結:1)析構函式是物件銷毀時進行清理的特殊函式
2)析構函式在物件銷毀時自動被呼叫
3)析構函式是物件釋放系統資源的保障
C 22 物件的銷毀
問題 c 中如何清理需要銷毀的物件呢?class test void free c 編譯器是否能夠自動呼叫某個特殊的函式進行物件的清理呢?定義 classname include class test test test t3 3 int main 輸出 test int i i 3 test in...
C 深度解析 14 物件的銷毀
1.物件的銷毀 class test void free c 編譯器是否能夠自動呼叫某個特殊的函式進行物件的清理?2.析構函式 定義 classname include class test test void run int main 3.陣列類的進化 ifndef array h define ...
第22課 物件的銷毀
本文內容取自於對狄泰學院 唐佐林老師 c 深度解析 課程的學習總結 c 的類中可以定義乙個特殊的清理函式 定義 classname 析構函式的定義準則 當類中自定義了建構函式,並且建構函式中使用了 系統資源 如 記憶體申請,檔案開啟,等 則需要自定義析構函式。程式實驗 include class t...