作者littleshan (我要加入劍道社!)
看板GameDesign
標題Re: [程式] 請問一下C++繼承的問題
時間Wed Feb 18 02:19:41 2009
※ 引述《seeulin (My Way)》之銘言:
: 以上程式碼在編譯時期會發生錯誤
: 錯在b.Foo("Call B")的部分
: 但是將TestB的Foo function拿掉的話
: 就可以正常執行
: 請問版上的高手能夠幫忙解答一下嗎?
: 小弟實在百思不得其解啊...
這是 C++ 的一個規定
base class 的 virtual function 若有 overload
而其中之一在 derived class 中被改寫的話
其它的 overloaded function 會被蓋掉
所以你 TestB 就只能直接呼叫 int 的版本
char* 的版本也不是完全沒辦法用
只是要這樣寫
b.TestA::Foo("Call B");
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.116.140
※ 編輯: littleshan 來自: 59.121.116.140 (02/18 02:20)
推 jellyice:正解,推一個。補充一下,到古狗查"C++ hiding"就查得到 02/18 20:26
→ seeulin:我瞭解了,感謝解答 02/19 01:51
推 fbiwbi:這應該跟virtual沒有關係吧 只要子類別有overload父類別的 02/19 12:42
→ fbiwbi:函式的話 其他函式就會被遮蔽 02/19 12:42