我应该总是在C++ 11中为getter使用noexcept方法修饰符吗?
我的意思是简单的吸气者,只是回归成员.至少在我所有的getter中,我有一个例外是不可能抛出的.一个缺点是getter变得过于冗长:
const std::string& getName() const noexcept{ return name; }
Run Code Online (Sandbox Code Playgroud)
Stroustrup的书中指出的好处是编译器可能会在这里和那里做一些优化.
Seb*_*edl 28
noexcept是一个很难收回的承诺.例如,您可以稍后执行一些简单的操作,例如将返回类型更改为std::string(无论出于何种原因),但因为需要分配字符串的副本,所以它可以抛出.
因此,标准采用了" noexcept仅在必要或非常有益的情况下添加"的方式,我认为这是一个很好的规则.你需要问自己的问题是,这种方法的调用者是否需要它不抛出?
| 归档时间: |
|
| 查看次数: |
2631 次 |
| 最近记录: |