プログラムで何かが発生しましたが、それが起こるべきかどうかわかりません。もしそうなら、私には理由がわかりません..
コードは次のとおりです。
#include <iostream>
#include <vector>
using namespace std;
class A{
public:
A();
~A();
};
A::A(){
cout << "creating" << endl;
}
A::~A(){
cout << "deleting" << endl;
}
int main(void){
vector<vector<A > > vec;
vec.resize(5);
for(int i = 0; i < 5; ++i){
vec[i].resize(5);
}
cout << "END" << endl;
return 0;
}
そして、ここに出力があります:
creating
deleting
creating
deleting
creating
deleting
creating
deleting
creating
deleting
END
deleting
deleting
[..more deleting here]
「END」メッセージの後にデストラクタが呼び出される理由は理解していますが、その前にはわかりません。ベクトルのリサイズ時にクラスのコンストラクタが呼び出されると思っていたのですが、なぜデストラクタなのか?