我有以下简单的代码:
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
而没有一个,a=1
而每种情况都有一个构造函数调用。那么在这种情况下如何调用构造函数和析构函数呢?