c++ - 为什么不在 C++ 中调用析构函数?

标签 c++ constructor destructor

我正在研究C++ 概念。我对构造函数和析构函数的概念感到困惑。析构函数将在程序退出时由编译器隐式调用。但是在我的程序中,只调用了构造函数。

#include <iostream>
using namespace std;

class A
{
        int i;
public:
        A()
        {
                cout<<"Constructor call"<<endl;
        }
        ~A()
        {
                cout<<"Destructtor call"<<endl;
        }
};

int main()
{
        A *a = new A();
}

输出:

Constructor call

所以,我有一个问题:为什么编译器在退出程序时不隐式调用析构函数?

最佳答案

Why destructor not call implicit by the compiler upon exit program?

因为动态分配的对象不会自动销毁。这就是指定语言的方式。跟踪动态对象的销毁需要运行时/内存开销。

解决方案:不要泄漏动态分配的对象。

关于c++ - 为什么不在 C++ 中调用析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41870883/

相关文章:

c# - 基于类型重载泛型类的构造函数

c# - .ctor 是不明确的,因为类中存在多种具有此名称的成员

c# - 涉及 C# 析构函数的成本(又名 : finalizers)?

exception - Ada 83 异常是否包括资源清理?

c++ - 如何检查嵌套模板的类型?

c++ - 在 C++ 中使用 OpenCV 2.4 计算凸性缺陷

c++ - 我可以将非类型模板参数传递给重载运算符吗?

c++ - 如何在 C++ 中正确访问继承的方法和构造函数?

c# - 使用new时的数组初始化

c++ - delete 一定是析构函数中的最后一条语句吗?