我有一個奇怪的問題,我敢肯定有一個簡單的修復。我有一個超類,我們稱之爲「鳥」。 Bird有一個稱爲chirp的虛函數,它返回0。我也有一個子類讓它調用它... SomeOtherBird。 SomeOtherBird是Bird的一個子類。我的子類的啁啾()函數應該返回我1C++多態性
到目前爲止:
Bird.Chirp()應該返回0 SomeOtherBird.Chirp()應該返回1
一些其他的鳥是鳥的一個子類。
現在,假設我將Bird傳入一個獨立的構造函數,我們稱之爲嵌套。
所以:鳥巢(鳥& X)
如果我通過在SomeOtherBird,我稱之爲啁啾,它調用主超一流的虛函數,而不是子類的,因此,例如:
SomeOtherBird x; Nest(x); 然後如果我做了x.chirp,主要方法被調用,而不是子類中的一個。
如何獲得子類中的函數被調用,而不是虛擬主函數?
感謝
此外,包括您在使用,而不是一些迂迴的描述故障的實際代碼。 – Xeo 2011-12-15 05:19:10
Dynamic Dispatch應該可以工作,並且它應該返回1,除非您正在做其他事情。發佈你的整個代碼 – Anand 2011-12-15 05:20:11