我有一个包含一些函数的类(没有任何虚函数),还有两个子类公开继承该类。在这两个子类中,我重写了基类的同一个函数。
在主函数中创建了三个类的对象(均位于同一文件中),我使用基类对象调用原始函数,使用派生类对象调用重写函数。
我本来期望所有3个函数调用都会运行基类的原始函数(因为我没有在代码中使用“virtual”关键字),但实际上我得到的是每个函数版本根据其定义的类而变化(3个不同的版本)。
我的 Base 和 Derived 类如下:
我认为如果没有使用“virtual”,则d.foo()应该运行Base::foo()。
在主函数中创建了三个类的对象(均位于同一文件中),我使用基类对象调用原始函数,使用派生类对象调用重写函数。
我本来期望所有3个函数调用都会运行基类的原始函数(因为我没有在代码中使用“virtual”关键字),但实际上我得到的是每个函数版本根据其定义的类而变化(3个不同的版本)。
我的 Base 和 Derived 类如下:
struct Base
{
void foo();
};
struct Derived : Base
{
void foo();
};
在主函数中:
int main()
{
Derived d;
d.foo();
}
我认为如果没有使用“virtual”,则d.foo()应该运行Base::foo()。