在派生类中添加虚拟说明符

bjo*_*ude 3 c++ virtual inheritance class

考虑以下代码:

struct virtualfoo 
{
    virtualfoo{};
    virtual ~virtualfoo{};

    virtual double doStuff() = 0
};


struct realbar :  virtualfoo   
{
     realbar{};
     virtual ~realbar{};

     virtual double doStuff();
};
Run Code Online (Sandbox Code Playgroud)

因为我想实现doStuff()realbar,虚拟的是不是强制性的.但如果我做对了,那么将虚拟说明符放在旁边也不会有害realbar::doStuff(),是吗?使用/不使用虚拟可以获得哪些副作用?

P0W*_*P0W 9

派生类中不需要virtual关键字.然而,它使代码更清晰.同样在C++ 11 override中引入了关键字,它允许源代码清楚地指定成员函数旨在覆盖基类方法.

使用关键字override,编译器将检查基类以查看是否存在具有此确切签名的虚函数.如果没有,编译器将抛出错误.