吃饭时与“大姐”讨论问题,他问道“C++如何设计一个不能被继承的类”?不能被继承,那把构造函数和析构函数设计成私有的不就行了,这样一来子类不能访问父类的构造函数和析构函数,也就无法继承了。然而这样一来,这个类在其他地方也就不能实例化了,没有存在的意义了。
这时候你是不是想到了静态方法,是啊,我们可以通过静态方法来返回类的实例,然后通过另一个静态方法来释放该类对象。代码如下:
//static function
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 AR
{
public:
static AR& getInstance(int n)
{
AR par;
par.num = n;
return par;
}
static void destructInstance(AR& pInstance)
{
pInstance.~AR();
}
private