覆盖虚拟功能到非虚函数可以吗?

时间:2013-12-15 06:46:43

标签: c++ inheritance virtual-functions

class Base
{
    virtual void foo();
}


class Derived : public Base
{
    void foo();
}
好吗? 或者它可以产生一些问题? 我认为它坚持“不要被衍生出来”。

3 个答案:

答案 0 :(得分:2)

将基类中的foo()函数标记为virtual后,即使您未在前面提及关键字virtual,它也会在Derived类中隐式virtual它的。

答案 1 :(得分:0)

virtual是继承的。即使您没有声明重写方法virtual,它也将是虚拟的。

因此,如果您使用Derived指针或引用访问Base的对象,则会调用foo的{​​{1}}。

答案 2 :(得分:0)

虚拟函数自动继承。因此,即使您没有将其声明为虚拟,它实际上也是虚拟的。

您明确将其声明为虚拟的原因是为了更好地说明,以便读取此代码的任何人都可以立即理解它是虚函数,而无需检查基类声明。