私有析构函数这个东西以前理解的不好,现做总结。
这里就要提到上篇文提到的析构函数可以设置为私有的问题了。
首先,我们使用析构函数(析构函数或者合成析构函数)都是用来完成资源(栈上和堆上的)回收的。
那么我们可以知道,要实现资源回收(不管是主动的还是被动的)都要调用函数,而一旦将析构函数设置为私有的,肯定就会限制资源的回收的。
而设置的这种限制可以让我们做很多其他的事情,如要想析构就必须执行身份验证等等。如下例子:
#include <iostream>
using namespace std;
class A{
public:
void release(){
cout << "this is my work" << endl;
this->~A();
}
private:
~A(){
cout << "A's unconstruction" << endl;
}
};
int main(){
A *a = new A;
a->release();
return 0;
}
上述代码展示了私有析构函数的使用,有以下几点总结:
1.析构函数是私有的类不能在栈上建立对象,只能在堆上进行;
2.析构函数是私有的使得其他需要使用我们类的人必须完成我们要求的工作后在析构掉对象;
一般地,我们把析构函数设置为public属性。