C++11新特性(80)-繼承的建構函式與多重繼承
阿新 • • 發佈:2018-11-01
複習
本文算是前面文章的繼續。
對於繼承的建構函式,C++11通過一個簡單的using語句,使得繼承一個類時可以省去一些麻煩。具體可以參照下面的文章。
C++11新特性(59)-繼承的建構函式
https://mp.weixin.qq.com/s/BGUa7-RSCtFRnBYjUVFFDA
多重繼承的情況
上述方法在多重繼承時仍然有效,除了一種情況:被繼承的父類的構造函資料用相同的簽名。這時C++11會產生編譯錯誤。例如下面的程式碼:
錯誤的原因就是從兩個基類繼承來的SubClass::SubClass(int v)衝突了。
解決辦法
這種情況也可以看做是一種二義性,所以解決的辦法也類似:說清楚就行了。這裡只對SubClass進行修改:
高亮的部分就是修改內容,直接定義了SubClass(int v)建構函式並顯式呼叫的Base1和Base2的建構函式。呼叫Base2時還乘了個2,只是想表明可以隨意呼叫基類的建構函式,並沒有什麼太特殊的含義。
作者一句話
本文的內容只是針對使用新特性時可能發生的錯誤的一種處理方式,本身其實也算不上什麼新特性。
示例程式碼下載地址
https://github.com/xueweiguo/OOThinking/blob/master/20180526%20SameConstructor.cpp
覺得本文有幫助?請分享給更多人。
閱讀更多更新文章,請掃描下面二維碼,關注微信公眾號【面向物件思考】