一、禁止類成員複製,其核心就在於不容許類外部看見覆制函數,包括「拷貝構造函數」、「operator =重載」。函數
#define DISALLOW_COPY_AND_ASSIGN(TypeName) \繼承
private: \ci
TypeName(const TypeName&); \編譯器
TypeName& operator=(const TypeName&)it
二、禁止隱式構造,則能夠將默認構造函數隱藏起來,在大多數編譯器中也能夠對構造函數增長explicit關鍵字來避免隱式構造。編譯
#define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \構造函數
private: \copy
TypeName(); \co
DISALLOW_COPY_AND_ASSIGN(TypeName)boost
更多解釋詳見《More Effective C++》
三、可繼承Boost庫的boost::noncopyable類實現相似功能。