派生類的構造函數和析構函數的調用

派生類的構造函數調用:

先執行基類的構造函數,並不是以構造函數的初始化列表爲準,而是以聲明構造函數時基類的順序爲準。再執行成員對象的構造函數,最後執行派生類的構造函數。

例子:

class Derived :public Base2, public Base1, public Base3  //聲明基類
{
public:
Derived(int i, int j, int k, int l);
void Print();
private:
int d;
Member men;


};

Derived::Derived(int i, int j, int k, int l) :Base1(i), Base2(j), men(k) //構造函數的初始化列表
{
d = l;
cout << "派生類的構造函數被調用 " << endl;
}

Derived obj(1, 2, 3, 4); 

則調用順序爲:

Base2的構造函數被調用
Base1的構造函數被調用

Base3缺省的構造函數被調用。

派生類的析構函數調用:
首先對派生類新增普通成員進行清理,然後調用成員對象析構函數,最後調用基類的虛構函數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章