Im folgenden Code wird der destructor zweimal aufgerufen, während der Konstruktor nur einmal aufgerufen wird:Warum heißt der Destruktor mehr als der Konstruktor?
enum TFoo
{
VAL1,
VAL2
};
class CFoo
{
public:
TFoo mf;
CFoo()
{
cout<<"hi c'tor1\n";
//mf = f;
}
CFoo(TFoo f)
{
cout<<"hi c'tor2\n";
mf = f;
}
CFoo(TFoo &f)
{
cout<<"hi c'tor3\n";
mf = f;
}
~CFoo()
{
cout<<"bye\n";
}
};
int main()
{
vector<CFoo> v;
//v.assign(1, VAL1);
v.push_back(VAL1);
}
Die Code-Ausgänge:
hi c'tor2 bye bye
Ich fand eine ähnliches question, die erwähnte Kopierkonstruktoren, also habe ich sie hinzugefügt, aber mit dem gleichen Ergebnis. Das Uncommentment der Zeile //v.assign(1, VAL1);
ändert ebenfalls nichts.
fehlt der Kopierkonstruktor 'CFoo (const CFoo &)' – Jarod42