C 析構函式

2021-09-06 20:53:47 字數 1103 閱讀 7150

功能:銷毀物件前執行清除工作

格式:[類名::]~類名()

class

student

;student::~student()

… …

注意:函式名與類名相同,且函式名前加~

沒有引數、不能被過載

不指定返回值

常定義為public

物件生命期結束時自動呼叫

思考:

通常不需人為定義析構函式,什麼時候必須定義析構函式?

一般,當類中含有指標成員,並且在建構函式中用指標指向了一塊堆中的記憶體,則必須定義析構函式釋放該指標申請的動態空間

#includeusing

namespace

std;

class

string

;string::string()

void string::display() const

/*string::~string()

*/int

main()

看下面的**,使用自己定義的析構函式--示例**1:

#includeusing

namespace

std;

class

string

;string::string()

string::~string()

void string::display() const

intmain()

示例**2:

#includeusing

namespace

std;

class

string

;string::string(

char *ap)

string::~string()

void string::display() const

intmain()

如果要定義析構函式,通常也需要定義拷貝建構函式和賦值運算子的過載函式。關於拷貝建構函式,可以參考《c++拷貝建構函式》

C 析構函式 虛析構函式

1.為什麼要定義虛析構函式?如果有乙個帶有虛函式功能的類,則它需要乙個虛析構函式,原因如下 1 如果乙個類有虛函式功能,它經常作為乙個基類使用 2 如果它是乙個基類,它的派生類經常使用new來分配 3 如果乙個派生類物件使用new來分配,並且通過乙個指向它的基類的指標來控制,那麼它經常通過乙個指向它...

C 析構函式和虛析構函式。

析構函式如果不是虛的話,基類的析構函式將不會被呼叫。多型時,也就是派生類被基類指標所指,或者被基類別名 虛析構函式,被呼叫時,其自身的析構函式和基類的析構函式都將會被呼叫。非虛的時候,不進行多型,只有基類的會被呼叫。純虛析構函式 定義的時候除了加 0 還需要給出函式的實現。因為當遞迴的呼叫析構函式時...

C 建構函式 析構函式 虛析構函式

一般地,建立物件和刪除物件時,父類建構函式 子類建構函式 子類析構函式 父類析構函式。特例 如果用new建立了乙個物件,並將父類的指標指向這個子類的物件,那麼用delete撤銷物件時,系統只執行基類的析構函式,而不執行派生類的析構函式。如果希望按照子類析構函式 父類析構函式的順序執行,那麼應該將基類...