禁止類成員復制,其核心就在于不允許類外部看見復制函數(shù),包括“拷貝構造函數(shù)”、“operator =重載”。
#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
private: \
TypeName(const TypeName&); \
TypeName& operator=(const TypeName&)
禁止隱式構造,則可以將默認構造函數(shù)隱藏起來,在大多數(shù)編譯器中也可以對構造函數(shù)增加explicit關鍵字來避免隱式構造。
#define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \
private: \
TypeName(); \
DISALLOW_COPY_AND_ASSIGN(TypeName)
更多解釋詳見《More Effective C++》