1樓:匿名使用者
在這裡,其實son類裡面會有兩個speak()成員
對它們的引用分別是:
son1=new son
son1->father::speak() //這個是從父類那裡繼承來的
son1->mother::speak() // 這個是從母類那裡繼承來的
這種引用法沒有二義性,可以通過編譯
如果speak()是從父母類的公有基類裡繼承的,可以在父母類定義時,用虛基類繼承
如下:class human
class mother:virtual public human
class father:virtual public human
class son:virtual public father,virtual public mother
像這種多繼承,常會發生成員函式的二義性。而用虛基類繼承只會從先輩類繼承一個公有成員比如speak(),避免了二義性。
這時的son1物件可以直接引用speak()
而不用再加上作用域符號「::」了。
2樓:匿名使用者
father,mather,son 都是人,可以先定義一個人的虛基類,
然後father,mather繼承,然後son繼承father,mather,裡面不是共有的特性就定義為虛擬函式 比如speak()
c語言問題,高手進C語言問題,高手進
第1個東西沒做過不過告訴你思路 設農夫為0,狼1,羊2,菜3,相鄰的不可以在一起無聊是在岸上還是船上。所以你就以0開始搜,不達到要求的過,最後就會出來結果 迷宮問題我都做爛了你要的是4方向的吧,給你一個還不錯的 include include include using namespace std ...
C 類繼承問題,C C 類繼承問題
你宣告的三個指標是不同型別的指標,會根據資料型別自動匹配,例如你如果宣告一個指標b指向a的一個物件的話會出錯,但是由於這個物件是c的,而c繼承了a和b,這時候通過資料型別強制轉換便可以從c的物件中獲取出b型別物件的地址。至於為什麼是a的,由於在繼承的時候有先後順序,其分配記憶體的先後順序也根據其繼承...
有關C 中指標問題,高手請進急
include using namespace std void change int int int main void change m,n 小到大 int main if pb pc if pa pb printf d d d a,b,c system pause return 0 大到小 i...