Re: [程式] 請問一下C++繼承的問題

看板GameDesign作者 (我要加入劍道社!)時間15年前 (2009/02/18 02:19), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《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)

02/18 20:26, , 1F
正解,推一個。補充一下,到古狗查"C++ hiding"就查得到
02/18 20:26, 1F

02/19 01:51, , 2F
我瞭解了,感謝解答
02/19 01:51, 2F

02/19 12:42, , 3F
這應該跟virtual沒有關係吧 只要子類別有overload父類別的
02/19 12:42, 3F

02/19 12:42, , 4F
函式的話 其他函式就會被遮蔽
02/19 12:42, 4F
文章代碼(AID): #19cl_0FV (GameDesign)
文章代碼(AID): #19cl_0FV (GameDesign)