C 筆記 繼承中的構造和析構呼叫規則

2021-07-09 04:34:09 字數 1149 閱讀 5728

直接上**

#include using namespace std;

class parent

~parent() };

class child :public parent

~child()

private:

int b;

int c;

};void play()

int main(void)

編譯執行結果如下:

從執行結果可以看出,繼承中的構造和析構的呼叫規則是:

先呼叫父類建構函式,再呼叫子類建構函式,析構的順序和構造的順序相反。

1>子類物件建立時會首先呼叫父類的建構函式;

2>父類的建構函式執行完畢後,執行子類的建構函式;

3>當父類的建構函式有引數時,需要在子類的初始化列表中顯式呼叫;

4>析構函式的呼叫順序和構造函式呼叫順序相反;

下來再看一下類中組合類時的構造和析構的呼叫規則:

#include using namespace std;

class obj

~parent() };

class child :public parent

{public:

child(char *p) :parent(p), obj1(3, 4), obj2(5,6)

{ this->myp = p;

cout << "child建構函式+++" <

按照執行結果,分析得出建立子類物件時會先呼叫祖先類的建構函式,再呼叫父類的建構函式,如果類內部組合了類的話,按照類定義順序呼叫它的建構函式,最後在呼叫子類的建構函式,析構函式和建構函式的呼叫順序相反。

其中child(char *p) :parent(p), obj1(3, 4), obj2(5,6)中的obj1和obj2的建構函式的呼叫順序是按照obj1和obj2定義的順序,而不是按照初始化列表的先後來呼叫建構函式。

C 繼承中構造析構呼叫原則

構造析構呼叫原則 1 子類物件在建立時會首先呼叫父類的建構函式 2 父類建構函式執行結束後,執行子類的建構函式 3 當父類的建構函式有引數時,需要在子類的初始化列表中顯示呼叫 4 析構函式呼叫的先後順序與建構函式相反 案例如下 define crt secure no warnings includ...

C 繼承中的構造和析構

在c 的繼承中,在子類物件構造時,需要呼叫父類建構函式對其繼承來的成員進行初始化,在子類進行析構時,需要呼叫父類的析構函式對其繼承來的成員進行清理,過程如下 1 子類物件在建立時會首先呼叫父類的建構函式 2 父類建構函式執行結束後,執行子類的建構函式 3 當父類的建構函式有引數時,需要在子類的初始化...

C 繼承中的構造和析構

先 呼叫父類建構函式 在呼叫 子類建構函式 析構的順序 和構造相反 1 子類物件在建立時會首先呼叫父類的建構函式 2 父類建構函式執行結束後,執行子類的建構函式 3 當父類的建構函式有引數時,需要在子類的初始化列表中顯示呼叫 4 析構函式呼叫的先後順序與建構函式相反 class parent par...