7
在下面的代碼,析構函數被調用兩次,而構造函數被調用一次:爲什麼析構函數調用的不止是構造函數?
enum TFoo
{
VAL1,
VAL2
};
class CFoo
{
public:
TFoo mf;
CFoo()
{
cout<<"hi c'tor1\n";
//mf = f;
}
CFoo(TFoo f)
{
cout<<"hi c'tor2\n";
mf = f;
}
CFoo(TFoo &f)
{
cout<<"hi c'tor3\n";
mf = f;
}
~CFoo()
{
cout<<"bye\n";
}
};
int main()
{
vector<CFoo> v;
//v.assign(1, VAL1);
v.push_back(VAL1);
}
代碼輸出:
hi c'tor2 bye bye
我發現類似question,其提到的複製構造函數,所以我添加了它們,但結果相同。取消註釋行//v.assign(1, VAL1);
也不會改變任何內容。
你想念複製構造函數'CFoo(const CFoo&)' – Jarod42