22 物件的銷毀

2021-10-04 02:46:51 字數 1059 閱讀 3080

注:部落格中內容主要來自《狄泰軟體學院》,部落格僅當私人筆記使用。

測試環境: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...