根据 C++11 标准,您可以使用default
关键字将特殊成员函数声明为默认值。
class Foo
{
public:
Foo() = default;
Foo(const Foo& source) = default;
Foo(Foo&& source) = default;
~Foo() = default;
Foo& operator=(const Foo& right) = default;
Foo& operator=(Foo&& right) = default;
};
我想知道如果您不需要自定义实现它们,将所有这些方法明确声明为默认或删除是一种好习惯。例如,我需要为我的类实现复制构造函数和复制赋值运算符。default
我是否应该用or关键字标记所有其他特殊成员函数,delete
以免每次查看编译器提供的类时不思考哪些不是?