输入:

#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次。

构造函数仅被调用两次!!!!

最佳答案

析构函数被调用三次,分别是alolb
在您的情况下,ab是使用default constructor实例化的。但是请注意,lol是使用copy constructor实例化的

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

10-11 15:53