由於兩義性問題的根源在公共基類,因此需要從公共基類著手,將公共基類說明為虛基類,就可以避免二義性。**如下:
注意:一、father 和mother在繼承時將human說明為虛基類,也就是只為子類son生成乙個speak函式,speak函式是惟一的,避免了二義性。
二、派生類指標不能直接指向基類物件。
三、派生類指標必須強制轉換成基類指標後才可指向基類。
謝謝大家!祝大家心情愉快。
ps:我的第一篇博文。
C 多繼承 虛繼承
一,多繼承 include include using namespace std class b1 繼承類c void main 主函式 c類按照順序繼承b2,b1,b4,b3 再按照資料成員定義順序 memberb1,memberb4,memberb3,memberb2 最後是自己的構造器 二,...
C 多繼承 多重繼承
派生類都只有乙個基類,稱為單繼承。除此之外,c 也支援多繼承,即乙個派生類可以有兩個或多個基類。多繼承的語法也很簡單,將多個基類用逗號隔開。例如已宣告了類a 類b和類c,那麼可以這樣來宣告派生類d class d public a,private b,protected c d 是多繼承形式的派生類...
C 多繼承 菱形繼承 虛繼承
b和c都單繼承了a d繼承了b和c 是多繼承 有兩個或兩個以上的基類就是多繼承 class a public int ma class b public a public int mb class c public a public int mc class d public b,public c ...