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
指示符,编译器无论如何都会这样做
您可以在中找到更多信息,例如:有时明确表示可以增加清晰度,您表示默认生成的是选择而不是错误代码>版本没有虚拟析构函数。
这两个声明之间有什么区别?
哪两个声明?您似乎只包含了每个特殊成员函数的一个声明。