liquid
2003-01-03, 02:33:07
N'abend, man ist das schon wieder spät *guck auf die Uhr*
Sprache: C/C++
Frage: Ist es möglich bei der Erstellung von ObjekteN (Mehrzahl ist hier wichtig), diese gleich zu initialisieren??
Sagen wir mal ich habe ein Objekttyp mit 2 Konstruktoren:
object();
object(const another_object& X);
Erstmal will ich ein Objekt auf dem Heap erzeugen...
object* dings = new object; // 1. Konstruktor wird benutzt!
another_object temporaer; // Zum Init vom nächsten object!
object* dings2 = new object(temporaer);
So, das funzt auch alles schön, aber folgendes hab ich irgendwie noch nicht hinbekommen.
object* dings = new object[3]{temp1, temp1, temp3};
Der Syntax (wenn es überhaupt geht) ist bestimmt falsch, aber ich will folgendes machen. temp1, temp2 und temp3 sind Objekte des typ another_object, mit denen ich ja den object-Tpy initialiseren will. So soll der 2. Konstruktor aufgerufen werden, der das Objekt mit einem von außen zugeführten Objekt initialisiert.
Mal das was funzt:
object* dings = new object[3]; // 1. Konstruktor wird benutzt
dings[0] = object(temp1); // 2.Konstruktor
dings[1] = object(temp2); // 2.Konstruktor
dings[2] = object(temp3); // 2.Konstruktor
Achtung: Der operator=, Kopierkonstruktor und alles andere sind vorhanden und funzen auch super.
Nun ist es bei dem oben aufgeführten Code ja so, dass der Konstruktor gleich 6 Male aufgerufen wird. Einmal wenn das Array erzeugt wird (3x 1.Konstruktor) und dann wenn das Array initialisiert wird (3x 2.Konstruktor).
Frage: Wie macht man sowas? Geht es, und wenn, wie genau?
Grund: Wie immer, Performance...*g*
Bin für jede Hilfe dankbar!!
cya
liquid
Sprache: C/C++
Frage: Ist es möglich bei der Erstellung von ObjekteN (Mehrzahl ist hier wichtig), diese gleich zu initialisieren??
Sagen wir mal ich habe ein Objekttyp mit 2 Konstruktoren:
object();
object(const another_object& X);
Erstmal will ich ein Objekt auf dem Heap erzeugen...
object* dings = new object; // 1. Konstruktor wird benutzt!
another_object temporaer; // Zum Init vom nächsten object!
object* dings2 = new object(temporaer);
So, das funzt auch alles schön, aber folgendes hab ich irgendwie noch nicht hinbekommen.
object* dings = new object[3]{temp1, temp1, temp3};
Der Syntax (wenn es überhaupt geht) ist bestimmt falsch, aber ich will folgendes machen. temp1, temp2 und temp3 sind Objekte des typ another_object, mit denen ich ja den object-Tpy initialiseren will. So soll der 2. Konstruktor aufgerufen werden, der das Objekt mit einem von außen zugeführten Objekt initialisiert.
Mal das was funzt:
object* dings = new object[3]; // 1. Konstruktor wird benutzt
dings[0] = object(temp1); // 2.Konstruktor
dings[1] = object(temp2); // 2.Konstruktor
dings[2] = object(temp3); // 2.Konstruktor
Achtung: Der operator=, Kopierkonstruktor und alles andere sind vorhanden und funzen auch super.
Nun ist es bei dem oben aufgeführten Code ja so, dass der Konstruktor gleich 6 Male aufgerufen wird. Einmal wenn das Array erzeugt wird (3x 1.Konstruktor) und dann wenn das Array initialisiert wird (3x 2.Konstruktor).
Frage: Wie macht man sowas? Geht es, und wenn, wie genau?
Grund: Wie immer, Performance...*g*
Bin für jede Hilfe dankbar!!
cya
liquid