为什么将 类 特殊函数显式声明为 "default"
Why explicitly declare classes special functions as "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
指示符,编译器无论如何都会这样做。
您可以在例如this class
reference.
显式声明 类 特殊函数默认值有什么区别。
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
指示符,编译器无论如何都会这样做。
您可以在例如this class
reference.