可以自己简单写一个noncopyable类:
class noncopyable
{
protected:
noncopyable() = default;
~noncopyable() = default;
noncopyable(const noncopyable&) = delete;
noncopyable& operator=(const noncopyable&) = delete;
};
class noncopyable的基本思想就是把构造函数和析构函数设置为protected权限,这样子类可以调用,但是外面的类不能调用,当子类需要定义构造函数的时候可以编译通过。把拷贝构造和拷贝复制函数取消,意味着除非子类定义自己的拷贝构造和拷贝赋值函数,否则外面的调用者不能够通过拷贝构造和拷贝赋值等手段产生一个新的子类对象。
#include<boost\core\noncopyable.hpp>
//using namespace boost;
class Test :boost::noncopyable {
public:
Test() {
std::cout << "constructor" << std::endl;
}
};
int main() {
Test t1;
Test t2(t1);//error
Test t3=t1;//error
system("pause");
return 0;
}