前言
本文的文字及圖片來源於網絡,僅供學習、交流使用,不具備任何商業用途,版權歸原做者全部,若有問題請及時聯繫咱們以做處理。
做者:可樂司機
構造函數是C++裏面的基礎內容,特別重要,若是你剛學C++不久,不是很懂,建議能夠先去小編的C++交流.裙 :九起久傘吧起傘留傘(數字的諧音)轉換下能夠找到了,裏面有最新C++教程項目從0到進階,有問題多請教裏面的人,進步更快哦網絡
1. 定義函數
與類同名、無返回值類型的成員函數。學習
析構函數是對象建立的一部分,在建立對象時,會被自動調用;建立對象後,析構函數就不能再被調用對象
默認析構函數:不帶參數,或者全部參數都有默認值的的析構函數,析構函數能夠重載。blog
類的析構函數通常是公開的,可是有時也把析構函數聲明爲私有的(如單例模式中就把析構函數聲明爲私有的),其做用是限制建立該類對象的範圍。繼承
2. 調用教程
根據參數進行重載,決定調用哪一個析構函數。圖片
3. 成員初始化表編譯
對於常量數據成員和引用數據成員(某些靜態成員除外),不能在聲明它們時進行初始化,也不能採用賦值操做對它們初始化。class
class A
{
int x;
const int y=1;//Error
int &z=x;//Error
public:
A()
{
x=0;//OK
y=1;//Error,y是常量成員,其值不能改變
}
}
它們的初始化要在成員初始化表中進行。
class A
{
int x;
const int y;
int& z;
public:
A(): z(x),y(1)
{
x=0;
}
}
或者
class A
{
int x;
const int y;
int& z;
public:
A(): x(0),z(x),y(1)
{
}
}
成員初始化表的次序不決定它們的初始化次序,它們的初始化次序由它們在類中的定義的次序決定。若是你剛學C++不久,不是很懂,建議能夠先去小編的C++交流.裙 :九起久傘吧起傘留傘(數字的諧音)轉換下能夠找到了,裏面有最新C++教程項目從0到進階,有問題多請教裏面的人,進步更快哦
若是類中含有常量數據成員或引用數據成員,必定要定義帶有成員初始化表的構造函數,不然編譯程序生成的默認構造函數是沒有成員初始化表的,這樣的類是不能建立對象的。
在建立包含成員對象的對象時,首先調用自己類的構造函數,在進入自己類的析構函數以前,將會去調用成員對象類的構造函數,而後再執行自己構造函數的函數體(在繼承中,要先調用基類的構造函數,再調用成員對象類的構造函數,最後執行本身的函數體)。即便成員對象初始化表爲空,只要類中有成員對象,編譯程序就會生成對成員對象構造函數的調用指令,只不過它調用的默認構造函數