を呼び出すI持って次のコード:ベクトルのコンストラクタ/デストラクタは
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
class A {
public:
int i;
A(int i=0):i(i) {
cout << "A::A() called" << endl;
}
~A() {
cout << "A::~A() called" << endl;
}
};
int main() {
vector<A> *a = new vector<A>(3);
delete a;
}
プログラムを印刷:
A::A() called
A::~A() called
A::~A() called
A::~A() called
A::~A() called
なぜ私は1つのコンストラクタとデストラクタ4と呼ばれると思いますか?
g ++ 4.8.4を使用しています。
コピーコンストラクタは – Amadeus
その出力[が間違っている]と呼ばれている(http://coliru.stacked-crooked.com/a/4dcfb98936905392)上記のスニペットのリスト – WhiZTiM
@WhiZTiMこれは真実ではありません:http://coliru.stacked-crooked.com/a/1ecb4852b136545dその出力はC++ 03 – Amadeus