@overrides for C?

@overrides for C?,第1张

概述在C中是否有一种方法可以确保子类中的虚方法实际上覆盖了超类虚方法?有时当我重构时,我会忘记一个方法然后想知道为什么它没有被调用但是我忘了改变方法签名所以它不再覆盖任何东西. 谢谢 在C 11中,可以使用覆盖标识符: struct Base { virtual void foo() const { std::cout << "Base::foo!\n"; }};struct Der 在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.};
总结

以上是内存溢出为你收集整理的@overrides for C?全部内容,希望文章能够帮你解决@overrides for C?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1255474.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存