TestDelete::TestDelete(int i) {
this->i = i;
std::cout <<"TestDelete constructor for "<<this->i<<"\n";
}
TestDelete::~TestDelete() {
std::cout <<"TestDelete destructor for "<<this->i<<"\n";
}
int main () {
std::vector<TestDelete> pt;
pt.push_back(TestDelete(1));
pt.push_back(TestDelete(2));
return 0;
}
上記のコード スニペットは以下のように出力されます
1 の TestDelete コンストラクター
1 の TestDelete デストラクタ
2 の TestDelete コンストラクター
1 の TestDelete デストラクタ。
2 の TestDelete デストラクタ。
1 の TestDelete デストラクタ。
2 の TestDelete デストラクタ。
の実装はpush_back
コピースワップの概念に基づいていることを理解しています。これにより、一時オブジェクトのコンストラクターとデストラクタが呼び出されます。しかし、デストラクタへの余分な呼び出しが行われていることに気付いた場合object1
。
誰かがここで何が起こっているのか説明できますか?