本文介绍了为什么析构函数被两次调用时我的程序不会崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面的代码是:

#include <iostream>
using namespace std;

class A
{
public:
    A() {}
    ~A()
    {
        cout << "in destructor" << endl;
    }
};
void main()
{
    A a;
    a.~A();
}

具有以下输出:

in destructor
in destructor

如果被破坏的对象再次被破坏,为什么我的应用程序不会崩溃?

Why my app does not crash if the destructed object is destructed again?

推荐答案

C ++标准,第12.4节[析构函数]

C++ Standard, section § 12.4 [destructors]

因此您的程序具有未定义的行为,它可能会立即崩溃,以后再也不会发生,地球可能会停止旋转等.

So your program has undefined behavior, it could crash now, later, never, earth could stop spinning etc... don't do it.

注意:

  • void main()必须为 int main()

这篇关于为什么析构函数被两次调用时我的程序不会崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-21 10:44