是否应该明确标记为虚拟全部覆盖任何级别的后代类?是否应该声明在所有级别的继承或仅在祖先级别虚拟的函数?
class Base {
// ...
protected:
virtual void to_be_derived() const; // First level to introduce this virtual function
};
class LevelOne : public Base {
// ...
protected:
// virtual??
void to_be_derived() const;
};
class LevelTwo : public levelOne {
// ...
protected:
// virtual??
void to_be_derived() const;
};
我没有看到Prefixing virtual keyword to overridden methods它回答我的问题。特别是,其中的一个答案已更新,以反映与C++ 11相关的当前使用情况,特别是我不知道的override
关键字!
编辑:我宁愿接受来自链接问题的后C++ 11代码的另一个答案。
在dervied类中默认是虚拟的,所以添加虚拟后缀与否,函数将是虚拟的 – jonezq
请注意,即使使用'override' /'final'的(正确)答案已经出现在上面的问题中。 –
@jonezq我知道这个函数仍然是虚拟的,但我将它看作是向*类用户显式传达它是虚拟的。 –