显式声明类特殊函数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{};
这2个声明有什么区别? 为什么要将默认行为函数明确指定为默认值?
答案 0 :(得分:9)
因为在某些条件下,编译器可能不会添加构造函数,析构函数或运算符,即使您可能需要编译器生成的默认值。然后通过使用显式default
指示符,编译器无论如何都会这样做。
你可以在例如this class
reference