如果自己设计的一个类,不想支持复制操作,可以继承asio::noncopyable类,实现原理是:
构造和析构函数设置为protocted权限,这样就不能直接创建noncopyable对象,只能由子类构造和析构函数调用它们。
拷贝构造和拷贝复制设置为私有的。
namespace noncopyable_ // protection from unintended ADL
{
class noncopyable
{
protected:
noncopyable() {}
~noncopyable() {}
private: // emphasize the following members are private
noncopyable( const noncopyable& );
const noncopyable& operator=( const noncopyable& );
};
}
typedef noncopyable_::noncopyable noncopyable;
}