我应该在 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/