實例化子類對象時,先進行父類構造函數,如果父類構造函數中既有默認構造函數也有有參構造函數,那么會調用哪個呢?
4 回答
已采納

guozhchun
TA貢獻103條經驗 獲得超76個贊
默認調用無參的構造函數。如果需要調用有參的構造函數,需要自己指定。格式為:派生類名(形參表) : 基類名(實參表)
例如:
class?A { ????public: ????????A(); ????????A(int?a); }; class?B { ????public: ????????B(); ????????B(int?b); }; //?如果定義?B?類構造函數為?B(){?/*?other?code?*/?},或者?B(int?b){?/*?other?code?*/?}?時,調用?A?類的?A()?構造函數 //?如果定義?B?類構造函數為?B():A(3){?/*?other?code?*/?},?或者?B(int?b):?A(b){?/*?other?code?*/?}時,調用?A?類的?A(int?a)構造函數

慕神3775235
TA貢獻6條經驗 獲得超7個贊
(1)如果參數有默認值,則調用時子類構造函數不進行向父類構造函數傳參就會發生錯誤 (2)如果參數無默認值,調用時傳參的是調用有參數的,不調用時調用的是默認的父類構造函數
- 4 回答
- 0 關注
- 3163 瀏覽
添加回答
舉報
0/150
提交
取消