gpt4 book ai didi

c++ - 新的 C++ 返回语法是否受到限制?

转载 作者:IT老高 更新时间:2023-10-28 12:32:43 26 4
gpt4 key购买 nike

我开始了一个新的私有(private)项目并决定使用更多 C++11/14这次。所以我也开始使用新的返回语法

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 功能,不如选择最能反射(reflect)您意图的功能。如果有较旧的替代方案来实现相同的目标,则没有某些规则要求仅使用 C++11/C++14 功能。

关于c++ - 新的 C++ 返回语法是否受到限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38541155/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com