Aufrufen eines Konstruktors in einem Konstruktor
-
Eine abgeleitete Klasse kann ja im Konstruktor den Konstruktor der Basisklasse aufrufen:
class Parent { public: Parent(int a) { } }; class Child : public Parent { public: Child(int a, b) : Parent(a) { } };
Zum Vergleich in C#:
class Parent { public Parent(int a) { } } class Child : Parent { public Child(int a, b) : base(a) { } }
Gibt es ein C++-Äquivalent zu sowas hier:
class Something { public Something(int a) { } public Something(int a, b) : this(a) { } };
?
-
Nein. Das geht im Moment noch nicht. Kommt aber mti C++0x:
http://en.wikipedia.org/wiki/C%2B%2B0x#Object_construction_improvement
-
Jannemann schrieb:
Gibt es ein C++-Äquivalent zu sowas hier:
[...]In einigen Fällen lässt sich das aber auch durch Default-Parameter oder einer gemeinsam nutzbaren init-Funktion lösen:
class Something { public: explicit Something(int a, int b = 0); };
-
senfer schrieb:
Jannemann schrieb:
Gibt es ein C++-Äquivalent zu sowas hier:
[...]In einigen Fällen lässt sich das aber auch durch Default-Parameter oder einer gemeinsam nutzbaren init-Funktion lösen:
Default Parameter sind sicher eine Möglichkeit, aber ich denke er wollte nicht darauf hinaus.
Das Problem mit den Funktionen ist halt, dass man da den Unterschied von einer Initialisierung und Zuweisung nicht ausnutzen kann. (Also z.B const Member gehen so nicht und auch, wenn man Basisklassen hat kann man keine Helper Funktion benutzen).