C 的繼承中構造和析構函式的呼叫順序

2021-08-07 20:57:10 字數 1176 閱讀 8168

例項:

#include using namespace std;

class parent

~parent()

public:

int a;

private:

int b;

protected:

int d;

};class child3 : public parent

~child3()

public:

private:

int c;

protected:

};int main()

system("pause");

return 0;

}

在上述**中,程式在執行時會先進入到基類的建構函式執行parent(int a,int b,int c)建構函式,當建構函式執行結束後列印基類建構函式,然後繼續執行child3的建構函式child3(int c,int a,int b,int  d),當該建構函式執行結束後列印派生類建構函式,然後進入到派生類析構函式執行,執行完成最後執行基類析構函式,最後列印基類析構函式;

混搭情況下構造和析構函式的呼叫規則:

構造:先呼叫父類建構函式,在呼叫構造成員,最後呼叫自己的建構函式;

析構:先析構自己,在析構成員變數,最後析構父類

#include using namespace std;

class grad

~grad()

private:

int _a;

int _b;

};class parent

~parent()

public:

int a;

private:

int b;

protected:

int d;

};class child3 : public parent

~child3()

public:

grad oop1;

grad oop2;

private:

int c;

protected:

};int main()

system("pause");

return 0;

}

類繼承中建構函式和析構函式的呼叫

類繼承中建構函式和析構函式的呼叫 現在,有三個類,類的定義如下 class ca class cb public ca 這個程式執行結果是 ca constructor cb constructor cc constructor cc desstructor cb desstructor ca de...

繼承中的構造析構函式呼叫順序

子類建構函式必須對繼承的成員進行初始化 1.通過初始化列表或則賦值的方式進行初始化 子類無法訪問父類私有成員 2.呼叫父類建構函式進行初始化 2.1 隱式呼叫 子類在被建立時自動呼叫父類建構函式 只能呼叫父類的無參建構函式和使用預設引數的建構函式 2.2 顯示呼叫 在含參建構函式的初始化列表呼叫父類...

C 繼承中的建構函式和析構函式

1 繼承中建構函式和析構函式呼叫順序 a 呼叫父類建構函式 b 呼叫其他成員的建構函式 c 呼叫子類建構函式 d 析構呼叫順序相反。include using namespace std class base public base cout base中的預設構造函式呼叫 2 子類預設呼叫父類的預設...