如果将一个类设计成不能被继承来的类,只要把类的构造函数设置为私有的,即可解决问题。因为那样的话,子类就没有办法访问基类的构造函数,从而就阻止了进行子类构造对象的任务实现,也就达到了不可继承的目的。
因为构造方法为私有,所以外部也不能调用构造函数生成实例,我们需要提供特殊的方法创建实例。
具体做法是定义静态方法,在方法内部实现一个对象,然后返回它的指针。
class Base
{
public:
static Base* createObj()
{
Base* base = new Base();
return base;
}
static void destroyObj(Base* base)
{
delete base;
base = NULL;
}
private:
Base(){}
Base(const Base& base){}
~Base(){}
};