@overrides for C?

前端之家收集整理的这篇文章主要介绍了@overrides for C?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在C中是否有一种方法可以确保子类中的虚方法实际上覆盖了超类虚方法?有时当我重构时,我会忘记一个方法然后想知道为什么它没有被调用但是我忘了改变方法签名所以它不再覆盖任何东西.

谢谢

解决方法

在C 11中,可以使用覆盖标识符:
struct Base {    
  virtual void foo() const { std::cout << "Base::foo!\n"; }
};

struct Derived : virtual public Base {
  virtual void foo() const override {std::cout << "Derived::foo!\n";}
};

这允许您在编译时找出是否未能覆盖方法.在这里,我们忽略了使方法const:

struct BadDerived : virtual public Base {
  virtual void foo() override {std::cout << "BadDerived::foo!\n";} // FAIL! Compiler finds our mistake.

};

猜你在找的C&C++相关文章