假设我有以下代码:
class A {
public:
void SetInteger(const int val) noexcept { integerMember = val; }
void SetString(const std::string& val) { stringMember = val; }
int GetInteger() const noexcept { return integerMember; }
std::string GetString() const { return stringMember; }
private:
int integerMember;
std::string stringMember;
}
Run Code Online (Sandbox Code Playgroud)
noexcept
对于整数类型和指针的使用对我来说非常明显.
但是,如果不是类和结构之类的整数类型的建议是什么,它们不会在构造函数/复制构造函数和它们的部件的构造函数中明确地抛出异常(意味着throw
在构造函数体中使用)?
您应该避免noexcept
对可能抛出异常的函数使用说明符(除非您准备好让代码调用std::terminate()
)。显式throw
说明符已被弃用,因此不要依赖它们,而是使用noexcept
运算符。例如
template<typename T>
class Foo
{
T m_datum;
public:
Foo& SetDatum(T const&x) noexcept(noexcept(m_datum=x))
{
m_datum = x;
return *this;
}
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
540 次 |
最近记录: |