c++ - 为什么析构函数被调用了三次?

标签 c++ constructor destructor

输入:

#include <iostream>
using namespace std;
class SimpleClass
{
    public:

    SimpleClass()
    {
        cout<<"SimpleClass Constructor\n";
    }
    virtual ~SimpleClass()
    {
        cout<<"SimpleClass destructor\n";
    }
};
int main()
{
    SimpleClass a;    
    SimpleClass lol = a;

    SimpleClass b;
    SimpleClass * lol2 = &b;
}

输出:

SimpleClass Constructor
SimpleClass Constructor
SimpleClass destructor
SimpleClass destructor
SimpleClass destructor

我很困惑为什么析构函数被调用了 3 次。

构造函数只被调用了两次!!!

最佳答案

析构函数被调用了 3 次,分别是 alolb
在您的例子中,ab 是使用 默认构造函数 实例化的。但是请注意,lol 是使用 copy constructor

实例化的

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

相关文章:

c++ - 为什么在 C++ 中,类的大小必须始终为用户所知?

c++ - 让主机应用程序在调试时看到 .so 库

c++ - 费舍尔耶茨变例

javascript - JSDoc:如何提示 this.constructor.staticSomething?

c++ - 创建带参数的类实例

C++ enable_if in class - 不同的破坏方式

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

c++ - CUDA C++11,lambda 数组,按索引函数,不工作

c++ - Gstreamer Textoverlay 未更新

multithreading - Groovy:找不到匹配的构造函数 'subclass'