在派生类中强制执行正确的虚函数定义

时间:2011-04-21 09:32:00

标签: c++ visual-c++ virtual-functions

  

可能重复:
  Making sure the method declaration is inherited

您好,我不时在我的类层次结构中强制执行虚拟成员函数的适当定义。如果我错误地定义了从接口继承的虚函数,那么bug很快就会浮出水面,因为我通常无法实例化派生类。但是,如果从基类(非抽象)继承,而后者继承自接口,则错误变得更加微妙:即。在错误定义中(例如VIsVisible()vs VisVisible()或参数类型包括const的小变化)然后当我认为我在其中时,我最终定义并调用层次结构外的函数。理想情况下,当我在派生类中定义函数时,我希望编译器通过引入某种关键字来标记它,如果它与基类中的现有虚函数不一致......其他人如何管理这个问题? 感谢您的帮助/想法!

1 个答案:

答案 0 :(得分:2)

您想使用override关键字:

class Base
{
    virtual void MyFunction() { /*Blah*/ }
};

class Child : Base
{
    virtual void MyFunction() override { /* DoSomething*/ }
};

如果更改Base::MyFunction的定义,现在会出现编译错误。

override documentation