兩個有用的宏:「禁止類成員複製」以及「禁止隱式構造」

一、禁止類成員複製,其核心就在於不容許類外部看見覆制函數,包括「拷貝構造函數」、「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類實現相似功能。

相關文章
相關標籤/搜索