对于构造函数,{}与= default相同吗?

时间:2015-04-07 03:07:43

标签: c++ c++11

在默认构造函数的定义中,= default;{ }完全相同吗?是否存在可能具有不同含义的情况?

样本伪代码:

template<typename... Args>
struct S // maybe with base classes
{
    S() = default;    
    // S() {}    - same or different?

    // other stuff...
};

1 个答案:

答案 0 :(得分:8)

他们是不同的。截至S() {}S被视为具有用户提供的构造函数,而S() = default;则没有。例如,这有助于S是否有资格作为聚合类型。请参阅here