noncopyable
设计类的目的?
- noncopyable保证了派生类的使用者无法拷贝构造或者赋值该对象
- 保证了类可以调用,但是外面的类不能调用,那么当子类需要定义构造函数的时候不至于通不过编译
- 在子类没有定义的情况下,外面的调用者是不能够通过赋值和copy构造等手段来产生一个新的子类对象的
类的接口
- 删除了拷贝构造函数和拷贝赋值函数
- 将默认构造和析构函数设为protected
类的实现
class noncopyable{
public:
noncopyable(const noncopyable&) = delete;
void operator(const noncopyable&) = delete;
protected:
noncopyable() = default;
~noncopyable() = default;
};
copyable
类的实现
class copyable{
protected:
noncopyable() = default;
~noncopyable() = default;
};