C++のクラスでは、コピーコンストラクタと代入演算子を再定義しないと、デフォルトの設定が使われてしまう。 デフォルトのメソッドだとメモリリークなどの問題につながる可能性がある。 Google C++ Style Guideでは、以下のようにして、デフォルトの設定を使わないようにしている。
class ClassName{ private: DISALLOW_COPY_AND_ASSIGN(ClassName); public: };
このマクロは以下のように定義されている
#define DISALLOW_COPY_AND_ASSIGN(TypeName) \ TypeName(const TypeName&); \ void operator=(const TypeName&)