在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...