構造函數/析構函數調用順序我有以下簡單的代碼:堆棧
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