M
HighLigerBiMBam schrieb:
Ich finde nicht, dass ein Defaultkonstruktor eine gescheite Initialisierungsmöglichkeit bietet bzw. ist!
MyClass *myclass = new MyClass[5];
Ich kann jetzt zwar allen den selben Konstruktor geben, muss aber wenn ich unterschiedliche Initialisierungen haben will. Extra Funktionen Aufrufen. Das habe ich im Fall des Vektors nicht. Da stellt sich echt die Frage, was hässlicher ist?
MyClass *myclass = new MyClass[5]
MyClass[0].Init(1,2,3);
MyClass[1].Init(4,7,3);
MyClass[2].Init(2,2,3);
MyClass[3].Init(1,4,3);
MyClass[4].Init(1,2,8);
//oder Vektor verwenden
Hier muss ich auch noch 2-mal Werte zuweisen. (Konstruktor und Init)
Wenn man Placement New (OP: googlen!) benutzt, bekommt man die unterschiedlichen Initialisierungen mit unterschiedlichen Konstruktoren und die doppelte Zuweisung und die Init-Funktionen (igitt) fallen weg. (Edit: Ein zusätzliches memset() muss man wahrscheinlich in Kauf nehmen).
Wenn man eine variable Anzahl von Elementen unterschiedlich initialisieren will, sehe ich den Schreibarbeitsvorteil weder bei Arrays noch bei std::vector. Wenn es eine konstante Anzahl ist, sind Arrays allerdings weniger Arbeit.