C++如何设计一个不能被继承的类?
我们首先想到,不能被继承,那把构造函数和析构函数设计成私有的不就行了,这样的话子类不能访问父类的构造函数和析构函数,也就无法继承了。
然而这样一来,这个类在其他地方也就不能实例化了,没有存在的意义了。
这时候我们应该想到静态方法,我们可以通过静态方法来返回类的实例,然后通过另一个静态方法来释放该类对象。
看如下代码:
class A
{
public:
static A* getInstance(int n)
{
A* pa = new A();
pa->num = n;
return pa;
}
static void destructInstance(A* pInstance)
{
delete pInstance;
pInstance = NULL;
}
private:
A(){cout << "construct A" << endl;}
~A(){cout << "destruct A" << endl;}
public:
int num;
};
那么?为什么必须返回指针而不返回对象的引用呢?
看下面代码:
class B
{
public:
static B& getInstance(