像java,c#等去掉了多重繼承,真需要的時候不得不用接口,有的是不方便的地方。
其實這種菱形繼承是沒必要存在的,不要用就好了。
像你說的,隻承認A的一份拷貝,但B和C會改變A的行為,例如A裏麵的共有函數M1會調用M2這個函數,而M2是虛函數被B和C實現,然後你在D裏麵調用M1,這時是B的M2被調用呢,還是C的M2被調用呢?
其實我們可以用explicity casting來解決,不過還是不要這麽用的好。語言是給自己編程帶來方便的,何必自找麻煩
像java,c#等去掉了多重繼承,真需要的時候不得不用接口,有的是不方便的地方。
其實這種菱形繼承是沒必要存在的,不要用就好了。
像你說的,隻承認A的一份拷貝,但B和C會改變A的行為,例如A裏麵的共有函數M1會調用M2這個函數,而M2是虛函數被B和C實現,然後你在D裏麵調用M1,這時是B的M2被調用呢,還是C的M2被調用呢?
其實我們可以用explicity casting來解決,不過還是不要這麽用的好。語言是給自己編程帶來方便的,何必自找麻煩
• C++裏麵有大量這樣的牛角尖,完全沒有必要去鑽。如果方便就用,千萬不值得把自己陷進去 -企鵝肥肥- ♂ (0 bytes) () 03/19/2011 postreply 18:42:15
WENXUECITY.COM does not represent or guarantee the truthfulness, accuracy, or reliability of any of communications posted by other users.
Copyright ©1998-2024 wenxuecity.com All rights reserved. Privacy Statement & Terms of Use & User Privacy Protection Policy