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