加入有父類是這樣定義的:
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.只要父...