加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

@overrides for C?

发布时间:2020-12-16 03:24:52 所属栏目:百科 来源:网络整理
导读:在C中是否有一种方法可以确保子类中的虚方法实际上覆盖了超类虚方法?有时当我重构时,我会忘记一个方法然后想知道为什么它没有被调用但是我忘了改变方法签名所以它不再覆盖任何东西. 谢谢 解决方法 在C 11中,可以使用覆盖标识符: struct Base { virtual voi
在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.

};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读