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