显式调用析构函数

grv95

在显式调用其析构函数之后,我仍然可以访问对象吗?

例如,

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

显式调用子析构函数是否也调用父析构函数

使用decltype的显式析构函数调用

如何显式调用 std 迭代器的析构函数?

C ++:显式调用模板参数的typedef的析构函数

为什么不能在析构函数可以的同时显式调用构造函数?

根据C ++标准,显式调用构造函数和析构函数是否安全?

显式调用基类的析构函数/构造函数合法吗?

Python继承:是否必须显式调用parent构造函数和析构函数?

在C ++中从构造函数中显式地调用析构函数是不好的做法吗?

显式调用`int`析构函数-为什么需要类型别名?

什么时候需要进行显式的析构函数调用?

我需要在这里显式调用析构函数吗?

我是否需要显式调用基本虚拟析构函数?

C ++析构函数-继承上下文中的显式调用

如何显式调用命名空间限定的析构函数?

为什么显式调用析构函数会导致双重释放?

析构函数调用

通过显式调用其析构函数和构造函数来重新创建对象

显式调用模板参数类型的析构函数,即使在内置函数上实例化时也是如此

C++11:我可以显式调用基类析构函数来销毁派生类吗?

从析构函数调用BeginInvoke

删除从析构函数调用的引发析构函数

为什么带有auto_ptr和显式析构函数的struct无法交换

是否允许显式调用析构函数,然后将新变量放置在具有固定生命周期的变量上?

隐式声明的析构函数

隐式使用析构函数

C ++中的“隐式析构函数”

是否在重载的运算符delete函数中隐式调用析构函数?

未调用子类的析构函数