在显式调用其析构函数之后,我仍然可以访问对象吗?
例如,
class A{
public:
A(){
cout<<"Constructor\n";
x=5;
}
~A(){
cout<<"Destructor\n";
}
int x;
};
int main() {
ios_base::sync_with_stdio(false);
A obj;
obj.~A();
obj.x=4;
cout<<obj.x<<endl;
return 0;
}
提供输出
构造毁灭者4毁灭者
调用析构函数后,如何访问obj.x?如果显式调用没有销毁对象,那么它将做什么?
它调用析构函数,但不释放内存。内存将在函数结束时重新分配。
顺便说一句,如果您不了解会发生什么,您可能不应该这样做:在范围的末尾将第二次调用析构函数,如果不能两次调用析构函数,则可能会导致问题(通常是案子)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句