作者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)
1F:推 jellyice:正解,推一个。补充一下,到古狗查"C++ hiding"就查得到 02/18 20:26
2F:→ seeulin:我了解了,感谢解答 02/19 01:51
3F:推 fbiwbi:这应该跟virtual没有关系吧 只要子类别有overload父类别的 02/19 12:42
4F:→ fbiwbi:函式的话 其他函式就会被遮蔽 02/19 12:42