Vector of Objects

20/11/2016 - 12:48 von Christian Steins | Report spam
Hallo,

unten stehendes Programm ergibt folgende Ausgabe:

name = c1 x = 1 y = 2
name = c2 x = 3 y = 4
destructor c1
destructor c2
destructor c1
destructor c1
destructor c2

Ich sehe hier keine Logik in der Anzahl (5) und Aufrufreihenfolge des
Klassendestruktors.

Compiler ist TDM-GCC 4.9.2.

Liegt hier ein Bug vor?


snip --

// c++ test program

#include <iostream>
#include <vector>
#include <string>

using namespace std;

class myclass {

private:
string name;
int x;
int y;

public:
void print() {
cout << "name = " << name;
cout << " x = " << x << " y = " << y << endl;
}

myclass() { x = 0; y = 0; name = "unnamed"; }
myclass(string nam, int xx, int yy) { x = xx; y = yy; name = nam; }

~myclass() {
cout << "destructor " << name << endl;
}
};

int main() {

vector<myclass> myvec;

myclass c1("c1",1,2);
myclass c2("c2",3,4);

c1.print();
c2.print();

myvec.push_back(c1);
myvec.push_back(c2);

return 0;
}

snip --

Grüße
Christian
 

Lesen sie die antworten

#1 Christian Steins
21/11/2016 - 13:22 | Warnen spam
Am 20.11.2016 um 12:48 schrieb Christian Steins:

Ich sehe hier keine Logik in der Anzahl (5) und Aufrufreihenfolge des
Klassendestruktors.



Schön das mein Posting hier nach 24 Stunden doch noch auftaucht.

Die Frage ist inzwischen geklàrt, es liegt an der internen Arbeitsweise
von <vector>.

Christian

Ähnliche fragen