1、禁止类成员复制,其核心就在于不允许类外部看见复制函数,包括“拷贝构造函数”、“operator =重载”。

#define DISALLOW_COPY_AND_ASSIGN(TypeName) \

private:                     \

TypeName(const TypeName&);               \

TypeName& operator=(const TypeName&)

2、禁止隐式构造,则可以将默认构造函数隐藏起来,在大多数编译器中也可以对构造函数增加explicit关键字来避免隐式构造。

#define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \

private:                     \

TypeName();                                    \

DISALLOW_COPY_AND_ASSIGN(TypeName)

更多解释详见《More Effective C++》

3、可继承Boost库的boost::noncopyable类实现类似功能。

05-06 11:12