看网上的方法,三种当中的一种是,实现一个父类:
class uncopyable{
protected:
uncopyable(){}
~uncopyable(){}
private:
uncopyable(const uncopyable&);
uncopyable& operator=(const uncopyable&);
}
然后让子类继承父类,这里我一直对public private protected理解不透,子类继承为啥一定要private,还有就是类uncopyable为啥将构造和析构设置为protected???
关于public private protected,有没有好的介绍资料,网页or书都ok.
· 既然是
uncopyable
那自然就是不可拷贝的,那拷贝构造和赋值函数自然要是私有的(连子类也不能调用否则就不是uncopyable了),你也可以使用简洁明了
· 把构造函数和析构函数设为protected的确不是个明智的办法,因为哪怕你在子类中重载了构造函数和析构函数,你也无法藉由基类指针来析构对象,这样的话很多功能比如智能指针都会报错。
如果只是想阻止别人实例化对象的话而只将其作为接口的话,你完全可以使用纯虚类来完成。