私のプログラムで何かが起きました。起こるかどうかはわかりません。それがあれば、私は理由が表示されない...ここで オブジェクトのベクトルを初期化およびサイズ変更するときにデストラクタが呼び出されるのはなぜですか?
はコードです:#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 "メッセージが表示されますが、以前は表示されません。私は、ベクトルのサイズを変更すると、クラスのコンストラクタが呼び出されますが、デストラクタはなぜですか?
コピーctorをユーザー定義するのを忘れました。 resize()を呼び出すたびに出力を行い、出力を行うと、何が起きているのかがわかります。 –