C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 标准中的覆盖和noexcept的顺序大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
是否需要覆盖和noexcept的顺序?
class Base
{
public:
  virtual void foo() {}
};

class Derived : public Base
{
public:
  // virtual void foo() override {} // Ok
  // virtual void foo() noexcept {} // Ok
  // virtual void foo() noexcept override {} // Ok
  virtual void foo() override noexcept {} // Error
};

int main() {}

我正在使用gcc 4.7.2.

解决方法

实际上,是的,它很难找到,因为它有点分散.附件A(语法摘要)在这方面有所帮助.让我们试着找到具体的位:
declarator:
    ptr-declarator
    noptr-declarator parameters-and-qualifiers Trailing-return-type

parameters-and-qualifiers:
    ( parameter-declaration-clause ) attribute-specifier-seqopt cv-qualifier-seqopt
    ref-qualifieropt exception-specificationot

exception-specification:
    dynamic-exception-specification
    noexcept-specification

noexcept-specification:
    noexcept ( constant-expression )
    noexcept

然后是覆盖

@H_545_2@member-declarator: declarator virt-specifier-seqopt pure-specifieropt declarator brace-or-equal-initializeropt identifieropt attribute-specifier-seqopt: constant-expression virt-specifier-seq: virt-specifier virt-specifier-seq virt-specifier virt-specifier: override final

所以声明符是包含noexcept关键字的东西,但是在member-declarator中,virt-specifier出现在声明符之后.

大佬总结

以上是大佬教程为你收集整理的c – 标准中的覆盖和noexcept的顺序全部内容,希望文章能够帮你解决c – 标准中的覆盖和noexcept的顺序所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。