c++ noncopyable 类
一、noncopyable类作用
当类实现者不想让调用者拷贝或赋值构造类对象时,继承noncopyable类可达到此目的。
二、noncopyable类实现
class noncopyable
{
protected:
noncopyable() {}
~noncopyable() {}
private:
noncopyable(const noncopyable&);
const noncopyable& operator=(const noncopyable&);
};
// c++11 实现方法
class noncopyable
{
protected:
noncopyable() = default;
~noncopyable() = default;
private:
noncopyable(const noncopyable&) = delete;
const noncopyable& operator=(const noncopyable&) = delete;
};
三、原理
派生类调用拷贝构造函数或赋值构造函数时, 会调用基类(noncopyable)的拷贝构造函数或赋值构造函数
class A : public noncopyable {
public:
A(int i) {
i_ = i;
}
private:
int i_;
};
//调用
A a1(55);
A a2(a1); //error;