如果这个问题对你来说很愚蠢,请原谅我。我是 C++ 的新手,我正在研究朗姆酒时间多态性。我想知道当基类对象调用派生类函数(非虚拟)时会发生什么。例如看代码
class base {
public:
virtual void vfunc() {cout << "This is base's vfunc().\n";}
};
class derived1 : public base {
public:
void vfunc() {cout << "This is derived1's vfunc().\n";}
};
int main()
{
base *p, b;
derived1 d1;
p = &b;
p->vfunc();
p = &d1;
p->vfunc();
return 0;
}
我得到了想要的输出,然后我从基类中删除了 virtual 关键字,当我运行程序时,输出是
This is base's vfunc().
This is base's vfunc().
如果有人解释在这两种情况下发生了什么(在指针操作方面),我将非常感激
谢谢