析構函式是在物件消亡時,自動被呼叫,用來釋放物件占用的空間。
有四種方式會呼叫析構函式:
1.生命週期:物件生命週期結束,會呼叫析構函式。
2.delete:呼叫delete,會刪除指標類物件。
3.包含關係:物件dog是物件person的成員,person的析構函式被呼叫時,物件dog的析構函式也被呼叫。
4.繼承關係:當person是student的父類,呼叫student的析構函式,會呼叫person的析構函式。
第一種 生命週期結束
#include usingnamespace
std;
class
person
~person()
private
:
intname;
};int
main()
結果
person的建構函式刪除person物件
第二種 delete
對於new的物件,是指標,其分配空間是在堆上,故而需要使用者刪除申請空間,否則就是在程式結束時執行析構函式
#include usingnamespace
std;
class
person
~person()
private
:
intname;
};int
main()
結果
person的建構函式刪除person物件
第三種 包含關係
#include usingnamespace
std;
class
dog ~dog()
private
:
intname;
};class
person
~person()
private
:
intname;
dog dog;
};int
main()
結果
dog的建構函式person的建構函式
刪除person物件
刪除dog物件
第四種 繼承關係
#include usingnamespace
std;
class
person
~person()
private
:
intname;
};class student:public
person
~student()
private
:
intname;
string
no;};
intmain()
結果
person的建構函式student的建構函式
刪除student物件
刪除person物件
參考:
php析構函式什麼時候呼叫?
析構函式何時被呼叫 析構函式在下邊3種情況時被呼叫 物件生命週期結束,被銷毀時 物件i是物件o的成員,o的析構函式被呼叫時,物件i的析構函式也被呼叫。php 5 引入了析構函式的概念,這類似於其它物件導向的語言,如 c 析構函式會在到某個物件的所有引用都被刪除或者當物件被顯式銷毀時執行。和建構函式一...
C 析構函式 什麼時候用虛函式
如果不需要基類對派生類及物件進行操作,則不能定義虛函式,因為這樣會增加記憶體開銷.當類裡面有定義虛函式的時候,編譯器會給類新增乙個虛函式表,裡面來存放虛函式指標,這樣就會增加類的儲存空間.所以,只有當乙個類被用來作為基類的時候,才把析構函式寫成虛函式.析構函式的作用是在物件撤銷之前把類的物件從記憶體...
什麼時候呼叫拷貝建構函式
以下幾種情況會呼叫拷貝建構函式 1.以乙個物件初始化另乙個物件 2.函式以某個物件為引數 3.函式返回某個物件 4.初始化序列式容器的元素 2.void test2 另外以下程式 points i pointsarray1.points i 這一行並不會觸發 拷貝建構函式。呼叫的是 賦值運算子。賦值...