c++,析构函数有问题

标签 c++ destructor

我有这样的代码:

#include <iostream>

using namespace std;

class X
{
    int a;
public:
    X()
    {
        cout<<"X constructor was called"<<endl;
    }
    X(int n)
    {
        cout<<"X(int) constructor was called"<<endl;
    }
    ~X(){cout<<"X dectructor was called"<<endl;}
};
int main()
{
    X x(3);

    system("PAUSE");

    return 0;
}

这段代码执行的结果是:X(int) constructor was called 。 但是为什么没有打印析构消息呢?

据我所知,我们通过调用构造函数 X(int) 创建对象 x,在程序结束时必须删除该对象,但事实并非如此。

最佳答案

因为是在栈上分配的,所以应该在这里调用析构函数:

int main()
{
    X x(3);

    system("PAUSE");

    return 0;
} // X destructor (x go out of context)

关于c++,析构函数有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16590885/

相关文章:

c++ - Windows 操作系统上的 PEG 解析器库

c# - 函数参数中的空指针与对象

基于 try/finally + yield 的 Python 析构函数?

c++ - 在一个类的析构函数中应该删除的所有内容

c++ - 错误 : 'current_millis' was not declared in this scope

c++ - 从具有模板化构造函数的非模板化类继承 - 如何解决歧义?

c++ - 如何解决: The “Microsoft.VisualStudio.ProjectSystem.References.UnresolvedBuildDependencyProjectReference” reference could not be resolved?

c++ - 如果引用应该保留,不会在析构函数中删除指针会导致内存泄漏吗?

c++ - 从 ant 运行 ndk-build

Python:通过终结器在程序终止之前刷新缓冲区