默认的构造函数由C++编译器生成,用户无法控制它们.他们可以扔吗?是否可以指定noexcept何时声明?
以下代码编译得很好gcc.
struct A
{
A() = default;
};
struct B
{
B() noexcept = default;
};
int main()
{
A a;
B b;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
允许向noexcept默认的特殊成员函数(默认构造函数,复制构造函数,赋值运算符等)添加说明符.
一个default声明的特殊成员函数将有一个noexcept取决于符noexcept的参与功能(其隐含noexcept符)符.如果明确指定noexcept编译,则如果与隐式noexcept说明符冲突,则应该失败.
可以默认构造函数抛出?
是的他们可以.例如,如果类具有默认构造函数抛出的数据成员.
struct Foo
{
Foo() { /* throws */}
};
struct Bar
{
Bar() = default;
Foo f;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
359 次 |
| 最近记录: |