class Base
{
virtual void foo();
}
class Derived : public Base
{
void foo();
}
好吗?
或者它可以产生一些问题?
我认为它坚持“不要被衍生出来”。
答案 0 :(得分:2)
将基类中的foo()
函数标记为virtual
后,即使您未在前面提及关键字virtual
,它也会在Derived类中隐式virtual
它的。
答案 1 :(得分:0)
virtual
是继承的。即使您没有声明重写方法virtual
,它也将是虚拟的。
因此,如果您使用Derived
指针或引用访问Base
的对象,则会调用foo
的{{1}}。
答案 2 :(得分:0)
虚拟函数自动继承。因此,即使您没有将其声明为虚拟,它实际上也是虚拟的。
您明确将其声明为虚拟的原因是为了更好地说明,以便读取此代码的任何人都可以立即理解它是虚函数,而无需检查基类声明。