在对析构函数进行显式调用后,我仍然可以访问对象吗?
例如,
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? 如果显式调用没有破坏对象,那么它会做什么?
答案 0 :(得分:0)
它调用析构函数,但它不会释放内存。内存将在函数末尾解除分配。
顺便说一句,如果你不了解会发生什么,你可能不应该这样做:析构函数将在范围的最后被第二次调用,这可能会导致问题,如果它可以&#39 ;被调用两次(通常是这种情况)。