【发布时间】:2013-11-24 04:21:13
【问题描述】:
输入:
#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 个对象,对吧?
a, lol, b。您期望多少次析构函数调用?如果你实现copy constructor,你会看到一个对象被复制了。 -
您预期的次数是多少?
-
我预计是 2 次。因为
lol构造函数没有被调用。 -
问题应该是“为什么只有 2 次构造函数调用?”
-
@mk1 不,复制构造函数是为
lol调用的。
标签: c++ constructor destructor