Konstruktor in einem Kopie-Konstruktor aufrufen (String-Klasse)
-
Hallo! (Ich hoffe, ich schreibe an der richtigen Stelle
)
Spricht was dagegen sowas hier zu machen? :
MyString::MyString(char* szString) { length = getLength(szString); strBuffer = new char[length + 1]; StrCpy(szString, strBuffer, length + 1); } MyString::MyString(const MyString& str) { MyString(str.strBuffer); // anstatt des unten auskommentierten codes /*length = str.length; strBuffer = new char[length + 1]; StrCpy(str.strBuffer, strBuffer, length +1);*/ }
Wollte mir eigentlich damit nur ein wenig Schreibarbeit ersparen - der Code hat doch den selben Effekt, oder?
Schonmal im Voraus vielen Dank für Anworten!!Gruss [NeoSpee]
-
NeoSpee schrieb:
Spricht was dagegen sowas hier zu machen? :
Ja, dass es nicht funktioniert
In C++ können (im Gegensatz zu Java, was du zu kennen scheinst) in Konstruktoren keine anderen Konstruktoren derselben Klasse aufgerufen werden. Dein Code erzeugt ein temporäres unbenanntes Objekt vom Typ MyString.
Eine Möglichkeit, etwas ähnliches hinzukriegen, wäre, die Initialisierungsanweisungen in eine private Memberfunktion auszulagern, die dann von allen Konstruktoren aufgerufen wird.
-
Vielen, vielen Dank für die schnelle, hilfreiche Antwort!!!
Gruss [NeoSpee]
Gibt es denn einen sinnvollen Nutzen für so ein temporär erstelltes Objekt???
-
NeoSpee schrieb:
Gibt es denn einen sinnvollen Nutzen für so ein temporär erstelltes Objekt???
zB
return string("hallo");