C++派生类构造函数调用规则
一句話總結(jié):基類必須要定義一個構(gòu)造函數(shù)。
派生類構(gòu)造函數(shù)可以自動調(diào)用基類的默認(rèn)構(gòu)造函數(shù),但是前提是默認(rèn)構(gòu)造函數(shù)必須存在。通常情況下,默認(rèn)構(gòu)造函數(shù)系統(tǒng)會自動生成的,但是如果在基類中,我們自己定義了一個帶參數(shù)的構(gòu)造函數(shù),這個時候,系統(tǒng)是不會為基類自動生成默認(rèn)構(gòu)造函數(shù)的,這個時候派生類則無法自動調(diào)用基類的默認(rèn)構(gòu)造函數(shù)了,因為基類根本就不存在默認(rèn)構(gòu)造函數(shù)。遇到這種情況有兩種解決方案:其一,在基類中定義一個默認(rèn)構(gòu)造函數(shù)(不帶參數(shù)的構(gòu)造函數(shù)),例如上一節(jié)中的例2;其二,派生類中的每一個構(gòu)造函數(shù)都顯式的調(diào)用基類中的帶參構(gòu)造函數(shù)。
通常我們還會遇到這樣一種情況,派生類中并未顯式定義構(gòu)造函數(shù),這個時候派生類中只有系統(tǒng)自動生成的默認(rèn)構(gòu)造函數(shù),如此一來,如果我們不為基類設(shè)計一個默認(rèn)構(gòu)造函數(shù),則程序就會編譯出錯。這種錯誤很玄妙,如果不小心還真是難以發(fā)現(xiàn)。
?
總結(jié)
以上是生活随笔為你收集整理的C++派生类构造函数调用规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++继承机制下的构造函数
- 下一篇: C++继承机制下的析构函数