看板 GameDesign 關於我們 聯絡資訊
※ 引述《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