我正在C++中進行練習,但即時獲得意想不到的輸出,我希望有人能解釋。練習題要求我創建一個名爲rock的類,該類有一個默認的構造函數,一個拷貝構造函數和一個析構函數,所有這些都會向cout宣佈自己。在C++中的矢量內部工作?
在我嘗試採用值添加這個類的成員的向量的主要方法:
vector<Rock> byValue;
Rock r1, r2, r3;
byValue.push_back(r1);
byValue.push_back(r2);
byValue.push_back(r3);
cout << "byValue populated\n\n";
我預期的(和在鍛鍊方案示出)的輸出是:
Rock()
Rock()
Rock()
Rock(const Rock&)
Rock(const Rock&)
Rock(const Rock&)
byValue populated
~Rock()
~Rock()
~Rock()
~Rock()
~Rock()
~Rock()
但是輸出我得到的是:
Rock()
Rock()
Rock()
Rock(const Rock&)
Rock(const Rock&)
Rock(const Rock&)
~Rock()
Rock(const Rock&)
Rock(const Rock&)
Rock(const Rock&)
~Rock()
~Rock()
byValue populated
~Rock()
~Rock()
~Rock()
~Rock()
~Rock()
~Rock()
任何人都可以解釋爲什麼似乎是共同額外要求py的構造函數和析構函數?