noncopyable
noncopyable允许应用程序轻松地实现一个禁止拷贝的类。
noncopyable位于命名空间boost,需要包含头文件<boost/core/noncopyable.hpp>,
类定义如下:
namespace boost {
class noncopyable;
}
禁止拷贝源码解析:
struct base_token{};
class noncopyable: base_token
{
protected:
noncopyable() {}
~noncopyable() {}
noncopyable( const noncopyable& ) = delete;
noncopyable& operator=( const noncopyable& ) = delete;
};
noncopyable类将构造函数、析构函数、复制构造函数、赋值函数声明为protected方法,禁止拷贝和单独生成对象。
子类通过继承noncopyable类实现子类禁止拷贝功能:
举例:
#include<boost/core/noncopyable.hpp>
class test:public noncopyable
{
public:test
test();
}
test a;
test b(a); -->error 父类禁止拷贝