构造函数/析构函数调用顺序我有以下简单的代码:堆栈
class A
{
int a;
public:
A(int a) : a(a) { cout << "Constructor a=" << a << endl; }
~A() { cout << "Destructor a=" << a << endl; }
void print() { cout << "Print a=" << a << endl; }
};
void f()
{
A a(1);
a.print();
a = A(2);
a.print();
}
int main()
{
f();
return 0;
}
输出是:
Constructor a=1
Print a=1
Constructor a=2
Destructor a=2
Print a=2
Destructor a=2
我发现有与a=2
2次析构函数调用,并没有与a=1
而每个案例都有一个构造函数调用。那么在这种情况下叫做构造器和析构器呢?
你为什么期望使用'a = 1'的析构函数? – juanchopanza 2013-04-21 09:55:50
您是否发现了临时的“A”值?它活不了很长时间。 – 2013-04-21 09:56:55
我现在发现了Kerrek。哇,答案正在涌入。我清楚地知道。感谢大家。 – SolidSun 2013-04-21 10:10:00