Äquivalent zu Java this() Konstruktoraufruf?!
-
Hallo,
ich hoffe die Überschrift ist nicht viel zu umständlich formuliert, deshalb nochmal eine etwas ausführlichere Beschreibung meiner Frage:
Ich programmiere eigentlich in Java und muss mir jetzt zusätzlich C++ aneignen. Dabei ist mir die Frage gekommen, ob ich in C++ wie in Java einen anderen Konstruktor der Klasse mit etwas vergleichbaren wie this() aufrufen kann:
Mein Java-Beispiel:
public class test { private int a; private int b; public test() { this(1,2); } public test(int a, int b) { this(1,2); } }wie könnte so was vernünftig in C++ implementiert werden? Ich habe in meinem aktuellen Projekt (Code wurde nicht von mir ursprünglich verfasst) nämlich mehrere Konstruktoren, welche mittels Konstruktorliste initialisieren, sich aber immer nur in einem Parameter unterscheiden, wobei recht viel Code doppelt ist... Ich hoffe ich konnte meine Frage deutlich genug darstellen. Vielen Dank im Voraus!
Viele Grüße
-
chmbw schrieb:
muss mir jetzt zusätzlich C++ aneignen.
Du _darfst_ dir C++ aneignen. Sei froh ne ordentliche Programmiersprache zu lernen.
chmbw schrieb:
Dabei ist mir die Frage gekommen, ob ich in C++ wie in Java einen anderen Konstruktor der Klasse mit etwas vergleichbaren wie this() aufrufen kann:
Geht im aktuellen Standard, ist aber in keinem mir bekannten Compiler implementiert. War wohl nicht wichtig jenuch.
-
class SomeType { int number; public: SomeType(int new_number) : number(new_number) {} SomeType() : SomeType(42) {} };aus
http://en.wikipedia.org/wiki/C%2B%2B11Geht leider erst ab C++11
-
314159265358979 schrieb:
chmbw schrieb:
muss mir jetzt zusätzlich C++ aneignen.
Du _darfst_ dir C++ aneignen. Sei froh ne ordentliche Programmiersprache zu lernen.
chmbw schrieb:
Dabei ist mir die Frage gekommen, ob ich in C++ wie in Java einen anderen Konstruktor der Klasse mit etwas vergleichbaren wie this() aufrufen kann:
Geht im aktuellen Standard, ist aber in keinem mir bekannten Compiler implementiert. War wohl nicht wichtig jenuch.

-
Herzlichen Dank für die Antworten, insbesondere Volker, auch wenn ich diverse Kommentare von manch anderen nicht recht nachvollziehen kann. Liegt vielleicht am Alter...
Grüße
-
Und sonst gibt's in C++ noch Default-Argumente
class test { int a_, b_; public: explicit test(int a=1, int b=2); ... };oder man kann einen Teil der Initialisierung als private Elementfunktion auslagern, die von den Konstruktoren aufgerufen wird.
"Richtige" Konstruktor-Delegation wird später noch in den Compilern eingebaut.
-
Super, herzlichen Dank! Über solche Antworten freut man sich doch

Grüße