C++基类和派生类的构造函数(二)
生活随笔
收集整理的這篇文章主要介紹了
C++基类和派生类的构造函数(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基類構造函數調用規則
事實上,通過派生類創建對象時必須要調用基類的構造函數,這是語法規定。換句話說,定義派生類構造函數時最好指明基類構造函數;如果不指明,就調用基類的默認構造函數(不帶參數的構造函數);如果沒有默認構造函數,那么編譯失敗。請看下面的例子:
運行結果:
xxx的年齡是0,成績是0。
小明的年齡是16,成績是90.5。
創建對象 stu1 時,執行派生類的構造函數Student::Student(),它并沒有指明要調用基類的哪一個構造函數,從運行結果可以很明顯地看出來,系統默認調用了不帶參數的構造函數,也就是People::People()。
創建對象 stu2 時,執行派生類的構造函數Student::Student(char *name, int age, float score),它指明了基類的構造函數。
在第 27 行代碼中,如果將People(name, age)去掉,也會調用默認構造函數,第 37 行的輸出結果將變為:
xxx的年齡是0,成績是90.5。
如果將基類 People 中不帶參數的構造函數刪除,那么會發生編譯錯誤,因為創建對象 stu1 時需要調用 People 類的默認構造函數, 而 People 類中已經顯式定義了構造函數,編譯器不會再生成默認的構造函數。
總結
以上是生活随笔為你收集整理的C++基类和派生类的构造函数(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++基类和派生类的构造函数(一)
- 下一篇: C++基类和派生类的析构函数