输入:
#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次。
构造函数仅被调用两次!!!!
最佳答案
析构函数被调用三次,分别是a
,lol
和b
。
在您的情况下,a
和b
是使用default constructor
实例化的。但是请注意,lol
是使用copy constructor
实例化的
关于c++ - 为什么析构函数被调用三遍?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19922052/