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

2021-08-26 20:36:57 字數 740 閱讀 7711

在c++的類繼承中,建構函式不能被繼承(c11中可以被繼承,但僅僅是寫起來方便,不是真正的繼承)

建立物件時,首先呼叫基類的建構函式,然後在呼叫下乙個派生類的建構函式,依次類推;

析構物件時,其順序正好與構造相反;

if(子類沒有自定義建構函式)

{ if(基類沒有自定義建構函式)

{用子類定義物件時,先自動呼叫基類的預設建構函式,再調子類的預設建構函式。

}else if(基類有自定義無參建構函式)   

{用子類定義物件時,先自動呼叫基類的自定義無參建構函式,再調子類的預設建構函式。

} else

{用子類定義物件時,編譯提示沒有預設建構函式可用}}

else if(子類自定義建構函式但沒有呼叫基類的某個建構函式)

{if(基類沒有自定義建構函式)

{用子類定義物件時,先自動呼叫基類的預設建構函式,再調子類的自定義建構函式。

}else if(基類有自定義無參建構函式)   

{用子類定義物件時,先自動呼叫基類的自定義無參建構函式,再調子類的自定義建構函式。

} else   

{用子類定義物件時,編譯提示沒有預設建構函式可用}}

#include using namespace std;

class shape{

public:

void draw() {cout<

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

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

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

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

繼承中的構造和析構函式

子類物件在建立時首先會呼叫父類的建構函式,在父類的建構函式執行結束後,再執行子類的建構函式。當父類的建構函式有引數時,需要在子類的初始化列表中顯示呼叫。析構函式的呼叫的先後順序與建構函式相反 結論 建構函式 先呼叫父類 再呼叫子類 析構函式 先呼叫子類 再呼叫父類 如下所示 include usin...