我觉得这应该是函数重载的一种形式。实际调用的时候编译器会去找最匹配的那个函数。如果我用C的形式描述成员函数的话,那就是:
T Base::func(args...) => T func(Base *,args...)
T Sub::func(args...) => T func(Sub *,args...)
实际上父类的函数并没被覆盖掉,你如果用 (Base*)(&subobj)->func(args...) 的话,调用的还是父类的成员函数。
多态的虚函数又是另外一回事了,这个是运行时判断类型的,用C描述的话,obj_ptr->func(args...) 实际执行的是类似 obj_ptr->vtable->func(obj_ptr,args...) 的代码。
【 在 yml123 (layamon) 的大作中提到: 】
: 如题,为什么呢?
: - 来自 水木社区APP v3.4.0
--
FROM 123.112.71.*