Aquí está el código (también en http://pastebin.com/yw5z2hnG):C++ Demasiados destructores llamados tan pocos objetos
#include <iostream>
#include <vector>
using namespace std;
class X
{
public:
int i;
X();
~X();
};
X::X()
{
i = 1;
cout << "---constructor" << '\n';
}
X::~X()
{
cout << "***desctructor" << '\n';
}
int main()
{
vector<X> *vx = new vector<X>;
cout << "------------------------------------" << endl;
vx->push_back(X());
vx->push_back(X());
vx->push_back(X());
vx->push_back(X());
vx->push_back(X());
cout << "------------------------------------" << endl;
delete vx;
}
consigo la salida como:
------------------------------------
---constructor
***desctructor
---constructor
***desctructor
***desctructor
---constructor
***desctructor
***desctructor
***desctructor
---constructor
***desctructor
---constructor
***desctructor
***desctructor
***desctructor
***desctructor
***desctructor
------------------------------------
***desctructor
***desctructor
***desctructor
***desctructor
***desctructor
no entiendo por qué tantos destructores son llamado.
Es un duplicado muchas veces ... pero no puedo encontrarlos porque la gente que hace esta pregunta generalmente no sabe acerca de los constructores de copia implícitamente definidos: p Siempre me resulta gracioso que la ignorancia impida que uno aprenda, ya que evita que se realice una consulta de manera eficiente. –