C 中的析構函式

2021-07-23 08:52:19 字數 1089 閱讀 4170

概念:

析構函式執行與建構函式相反的操作:建構函式初始化物件的非static的資料成員,析構函式則是釋放物件所用的資源,並銷毀物件的非static資料成員。

特徵:

析構函式的名字是由波浪線接類名構成,他沒有返回值,也不接受引數,所以析構函式不能被過載。

注意:

析構函式和建構函式相同,建構函式有乙個函式體和初始化部分,析構函式也有乙個函式體和析構部分。在建構函式中,成員的初始化是在函式體執行之前進行,成員的初始化順序是按照成員在類中出現的次序所決定的,而在析構函式中正好相反,是先執行函式體再執行析構部分,成員的銷毀順序與初始化順序相反。

析構函式的呼叫是在物件最後一次被使用之後。

析構函式的析構部分是隱式的,函式體並不直接銷毀成員。

銷毀類型別的成員需執行成員自己的析構函式。

內建型別沒有析構函式,因此銷毀內建型別成員什麼也不需要做。

隱式的銷毀乙個內建指標型別成員不會delete它所指向物件。

當指向乙個物件的引用或指標離開作用域時,析構函式不會被執行。

合成析構函式:

當乙個類未定義自己的析構函式時,編譯器會為他定義乙個合成析構函式,在合成析構函式執行後,成員會被自動銷毀。

**實現

class complex

complex(double x, double y) :_real(x), _image(y) {}

complex(const complex &a)

complex &operator=(const complex &a)//賦值拷貝函式(運算子過載)

this->_real = a._real;

this->_image = a._image;

return *this;

} void print()//列印物件

~complex(){}//析構函式

};int main()

C 中的析構函式

在企業應用開發世界,效能,靈活性和安全性是最重要的。我作為乙個vc 程式設計師開始我的職業生涯,並且在乙個晴朗的早晨,我被轉到了web開發部。像每個c 程式設計師一樣,我也很失落。我想每個像tom,dick甚至harry能用html程式設計。然而,不久我就發現真正的挑戰是生產高效能的,靈活的可靠的應...

C 中的析構函式

析構函式 析構函式 destructor 與建構函式相反,當物件脫離其作用域時 例如物件所在的函式已呼叫完畢 系統自動執行析構函式。析構函式往往用來做 清理善後 的工作 例如在建立物件時用new開闢了一片記憶體空間,應在退出前在析構函式中用delete釋放 以c 語言為例,析構函式名也應與類名相同,...

C 析構函式 虛析構函式

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