这段代码的用意是 Base类定义多个接口,A类负责简单实例化各个接口。B类根据需要使用其中的某(几)个接口。这样B类为Base类的孙子类,最后由命名空间B中的fun接口调用。现在问题是如果去掉template里面的dynamic_cast, 直接使用app->fun() 或者app->fun(int),就可以调用B类的实现或者其基类A的实现。
如果只覆盖其中的一部分,是不是可以这么说,虚拟函数重载后,只能通过虚表调用对应接口(通过基类调用对应接口)。
【 在 ilovecpp 的大作中提到: 】
: 这个也算FAQ了。一组重载函数视作一个整体,不允许只覆盖其中一部分。你有一个B::fun就覆盖了所有继承来的fun。
- 来自「最水木 for iPhone13,2」
--
FROM 223.104.39.*