c++ - 我应该总是使用 noexcept 作为 setter/getter 吗?

标签 c++ c++11

我应该在 C++11 中始终对 getter 使用 noexcept 方法修饰符吗?

我的意思是简单的 getter,只返回成员。 至少在我所有的 setter/getter 中,我这里不可能有一个异常(exception) 被抛出。一个缺点是 getter 过于冗长:

const std::string& getName() const noexcept{ return name; }

Stroustrup 书中指出的好处是编译器 可能会在这里和那里做一些优化。

最佳答案

noexcept 是一个很难收回的 promise 。例如,您可以稍后做一些简单的事情,例如将返回类型更改为 std::string (无论出于何种原因),但因为这需要分配字符串的拷贝,所以它可以抛出。

因此标准采用了“仅在必要或非常有益时添加 noexcept”的方式,我认为这是一个很好的规则。你需要问自己的问题是,这个方法的调用者是否需要它不抛出?

关于c++ - 我应该总是使用 noexcept 作为 setter/getter 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21330807/

相关文章:

C++ "fatal error LNK1120"未解析的静态类成员

c++ - 移动构造函数是自动生成的吗?

c++ - 周期约为 100ms 的可移植周期性定时器

类 POD 数据的 C++ 保证和名称,支持 memcpy

c++ - 是否可以使用 std::basic_string 作为 char* 的包装器?

C++11 正则表达式多行 : Why does the group ([^\\0]+\n)? some_text 在 match[1] 中包含所有内容?

c++ - Meyers 单例和动态库

c++ - 使用函数定义作为友元声明时,clang 和 gcc 之间的行为差​​异

c++ - 如何初始化静态常量 vector

c++ - 给定一个顶点和一个四元数,先计算前面的一个顶点3.0