C++ 为什么要将类和特殊函数显式声明为;“违约”;

C++ 为什么要将类和特殊函数显式声明为;“违约”;,c++,class,c++11,default,C++,Class,C++11,Default,显式声明类和特殊函数默认值之间的区别是什么 class Myclass { public: Myclass() = default; virtual ~Myclass() = default; Myclass(MyClass&&) = default; Myclass& operator=(MyClass&&) = default; Myclass(const MyClass&) = default;

显式声明类和特殊函数默认值之间的区别是什么

class Myclass
{
public:

    Myclass() = default;
    virtual ~Myclass() = default;

    Myclass(MyClass&&) = default;
    Myclass& operator=(MyClass&&) = default;

    Myclass(const MyClass&) = default;
    Myclass& operator=(const MyClass&) = default;
};

MyClass{};
这两个声明之间有什么区别?
为什么要将默认行为函数显式指定为默认值???

因为在某些条件下,编译器可能不会添加构造函数、析构函数或运算符,即使您可能希望编译器生成默认值。然后,通过使用显式的
default
指示符,编译器无论如何都会这样做


您可以在中找到更多信息,例如:

有时明确表示可以增加清晰度,您表示默认生成的是选择而不是错误版本没有虚拟析构函数。
这两个声明之间有什么区别?
哪两个声明?您似乎只包含了每个特殊成员函数的一个声明。