關於父類沒有預設的建構函式時,子類如何建立建構函式

2021-06-22 05:10:50 字數 504 閱讀 4095

我們都知道,在類定義了帶引數的建構函式後,便不再提供預設建構函式,但是子類的建構函式需要父類的預設建構函式才能定義,否則編譯時將會出錯,這時有兩種解決方法,一種是利用建構函式過載,過載乙個預設的建構函式,另一種方法如下;

例:class tree //構造乙個樹類作為父類

void treelife() //樹類的乙個方法

};class yangtree :public tree //定義乙個楊樹類,作為子類,使用public繼承

{public:

yangtree(): tree(20, 1) //此處為第二種方法的核心,在構造子類時,通過這種語法方式給父類的帶參建構函式傳遞引數,使其初始化,從而初始化子類

{//**

另外,此種方式也可以用於對常量的初始化

例如在子類中定義乙個私有成員變數:private:const int pi;,則可以在子類建構函式可以寫成yangtree():tree(20, 1), pi(3);

初學c++,第一次發帖,勿噴

父類沒有預設的建構函式,子類會編譯通不過

父類沒有預設的建構函式,子類會編譯通不過 例子 父類 public class a 子類 錯誤 public class b extends a 子類正確 public class b extends a 如果父類沒有寫構造方法或者父類的構造方法跟預設的一樣 那麼子類不寫構造方法就會預設呼叫父類的構...

子父類中的建構函式

egclass fu class zi extends fu class extendsdemo3 列印結果為 fu show zi show 為什麼呢?因為在子類建構函式的第一行,有乙個隱式的語句 super 這句話是用於呼叫父類中那個空引數的建構函式,如果父類中只有空引數的建構函式就呼叫那個,如...

子父類中建構函式的特點

子父類中的建構函式 在對子類物件進行初始化時,父類的建構函式也會執行,那是因為子類的建構函式預設第一行有一條隱式的語句 super super 會訪問父類中空引數的建構函式,而且子類中所有的建構函式預設第一行都是super 為什麼子類一定要訪問父類中的建構函式?因為父類中的資料子類可以直接獲取,所以...