= default和没有参数的空构造函数之间的区别?

时间:2014-01-16 14:33:28

标签: c++ c++11

= default和没有参数的空构造函数之间的区别?

之间是否存在差异:

MyClass() {}
MyClass() = default;

2 个答案:

答案 0 :(得分:2)

总体而言没有。 ;)

它总体上会做同样的事情,但不完全一样(比如sftrabbit,Nawaz和0x499602D2建议它,谢谢你的方式)。

您会找到问题的答案here;)

答案 1 :(得分:0)

因此,这不使用构造函数,而是使用析构函数。但它确实显示了一点。将编译以下代码,并且不会触发静态断言。

这意味着您在一个示例中有一个用户定义的析构函数,而在另一个示例中有一个__default析构函数

#include <type_traits>

class X {
    public:
        ~X() {}
};

class Y {
    public:
        ~Y() = default;
};

static_assert(std::is_trivially_move_constructible<X>::value == false, "");
static_assert(std::is_trivially_move_constructible<Y>::value == true, "");