ここで何が起こるのか分かりません!クラスcVtstを定義し、ベクトルを作成します。私はオブジェクトが作成され、破壊されるのを見ます。ベクターに空きオブジェクトがないのはなぜですか?とにかく何が起こりますか?
class cVtst {
public:
int v;
cVtst(int v) {
this->v = v;
printf("Creating cVtst %d\n", v);
}
~cVtst() {
printf("Closing cVtst %d\n", v);
}
};
std::vector<cVtst> vc;
vc.push_back(34);
vc.push_back(2);
vc.push_back(-5);
while (!vc.empty()) vc.pop_back();
結果は次のとおりです。だから、
Creating cVtst 34
Closing cVtst 34
Creating cVtst 2
Closing cVtst 34
Closing cVtst 2
Creating cVtst -5
Closing cVtst 34
Closing cVtst 2
Closing cVtst -5
Closing cVtst -5
Closing cVtst 2
Closing cVtst 34
...?
あなたの質問は何ですか? –
コピーに注釈を付けてコンストラクタを移動するのを忘れてしまった。私が期待したものが表示されない理由を – Mat
私の質問は: が作成cVtst 2 を作成cVtst 34 を作成cVtst -5 閉会cVtst -5 閉会cVtst 2 あなたはコピーや移動コンストラクタに注釈を付けるのを忘れているのでcVtst 34 – Ted