Hier ist der Code (auch bei http://pastebin.com/yw5z2hnG):C++ Zu viele Destruktoren aufgerufen so wenige Objekte
#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;
}
ich die Ausgabe erhalten, wie:
------------------------------------
---constructor
***desctructor
---constructor
***desctructor
***desctructor
---constructor
***desctructor
***desctructor
***desctructor
---constructor
***desctructor
---constructor
***desctructor
***desctructor
***desctructor
***desctructor
***desctructor
------------------------------------
***desctructor
***desctructor
***desctructor
***desctructor
***desctructor
Ich verstehe nicht, warum so viele Destruktoren sind namens.
Es ist ein Duplikat viele Male vorbei ... aber ich kann sie nicht finden Denn Leute, die diese Frage stellen, wissen normalerweise nichts über implizit definierte Kopierkonstrukteure: p Ich finde es immer lustig, dass Ignoranz einen am Lernen hindern kann, weil er eine effiziente Abfrage verhindert. –