C 子類顯示呼叫父類的建構函式

2021-05-24 15:07:13 字數 1037 閱讀 8235

加入有父類是這樣定義的:

view plain

copy to clipboard

print?

class  ca   

ca(int  k) ;  

virtual  ~ca()   

void  output()   

private :  

int  m;  

};  

注意a類裡面有乙個私有成員m.

假設有乙個子類是這樣定義的:

view plain

copy to clipboard

print?

class  cb :  public  ca   

};  

顯然是錯誤的,b類不能夠直接訪問a類的成員m

這樣定義也是錯誤的:

view plain

copy to clipboard

print?

class  cb :  public  ca   

};  

這樣實際上是在cb(int k)中構造了乙個ca類的臨時變數例項,函式執行完之後就沒有了。如果有:

view plain

copy to clipboard

print?

cb b(2);  

執行的結果是:

using ca's constractor

using ca's 2nd constractor, k is 2

using ca's disconstractor

using ca's disconstractor

這說明,先預設的呼叫ca()構造了乙個cb的例項,然後又宣告了乙個ca (2)的例項。

正確的方法是這樣的:

view plain

copy to clipboard

print?

class  cb :  public  ca   

};  

這就是在子類中顯示呼叫父類的建構函式

C 子類顯示呼叫父類的建構函式

加入有父類是這樣定義的 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 classca ca intk virtual ca voidoutput private intm 注意a類裡面有乙個私有成員m.假設有乙個子類是這樣定義的 1 2 3 4 class...

子類與父類構造函式呼叫順序

子類的析構函式的呼叫順序,和子類的建構函式的呼叫順序相反!記住,相反即可。include include using namespace std classm m classn n classa a classb public a b private m m1 m m2 static n ms n ...

父類建構函式 子類建構函式

1.子類可以通過super關鍵字來顯式地呼叫父類的建構函式。2.當父類沒有提供無引數的建構函式時,子類也不可以有無參建構函式,且子類的建構函式中必須顯式的呼叫父類的建構函式 3.如果父類提供了無引數的建構函式,此時子類的建構函式就可以不顯式的呼叫父類的建構函式,預設呼叫父類的無參建構函式。4.只要父...