我开始了一个新的私人项目并决定使用更多C++11 https://en.wikipedia.org/wiki/C%2B%2B11/14 https://en.wikipedia.org/wiki/C%2B%2B14这次。所以我也开始使用新的返回语法
auto functionName() -> returnType;
它在大多数情况下工作得很好,但现在我需要一些错误处理,并且无法找到如何重写这样的东西:
virtual const char* what() const noexcept override;
使用新语法。是否在某些情况下无法使用新语法,或者我只是不够聪明,无法找到正确的顺序?对我来说,保持事情的一致性很重要,所以我希望问题更多地出现在我这边。
问题的原因在于noexcept
是函数声明符的一部分(并建议成为 C++17 中函数类型的一部分),而override
是一个(可选使用的)标识符,它不是函数声明符的一部分。
因此,在不使用override
该声明将是
virtual auto what() const noexcept -> const char *;
并且,自从override
必须出现在该声明之后,否则会导致
virtual auto what() const noexcept -> const char * override;
也就是说,不要盲目地使用 C++11/C++14 功能,而是选择最能反映您意图的功能。如果有旧的替代方案可以实现相同的功能,则不存在仅要求使用 C++11/C++14 功能的规则。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)