析构函数私有–》只能在堆上定义类对象,不能在栈上
析构函数共有–》可以堆栈定义类对象
#include <iostream>
using namespace std;
class alloc{
private:
~alloc(){}
public:
alloc(){
cout<<"alloc"<<endl;
}
void destroy(){
delete this;
}
};
int main(){
//alloc b;//~alloc不可访问
//类对象只在堆上分配
alloc *a = new alloc;
a->destroy();
//a->~alloc();不可访问
while(1);
}
本文探讨了析构函数的访问权限对其使用场景的影响。当析构函数设为私有时,意味着类对象只能在堆上创建;而析构函数公共时,类对象既可在堆上也可在栈上创建。
943

被折叠的 条评论
为什么被折叠?



