InfoJunkie Geschrieben 5. Juni 2008 Geschrieben 5. Juni 2008 Hi! Angenommen es gibt eine Klasse, die zwar keinen Standardkonstruktor mitbringt, dafür jedoch zwei Konstruktoren mit Parametern: class Test { Test(const char* c = "") : m_String(c) {} Test(const string& s) : m_String(s) {} ... }; Welcher Konstruktor wird aufgerufen, wenn nun folgendermaßen ein Objekt erstellt wird?Test t; Vom Bauchgefühl her würde ich sagen, dass der Konstruktor mit vorbelegtem char-Array aufgerufen und ein leerer String angelegt wird. Mein Hirn sagt, es wird der implizit erstellte Standardkonstruktor aufgerufen - weiß aber nicht, welchen Wert dann m_String annimmt. Wer hat nun recht? Zitieren
InfoJunkie Geschrieben 5. Juni 2008 Autor Geschrieben 5. Juni 2008 Falsches Forum :floet:... Bitte verschieben, Danke! Zitieren
Klotzkopp Geschrieben 6. Juni 2008 Geschrieben 6. Juni 2008 Wer hat nun recht? Dein Bauch. Dein Hirn irrt insoweit, als gar kein automatischer Defaultkonstruktor angelegt wird, sobald du selbst irgendeinen Konstruktor deklarierst. Zitieren
TDM Geschrieben 6. Juni 2008 Geschrieben 6. Juni 2008 Dein Bauch. Ist auch klar, weil das der einzige Konstruktor ist, der keine Parameter benötigt. Was wäre aber, wenn der Konstruktor mit der string-Referenz auch mit Standardwerten vorbelegt werden würde? Zitieren
qat Geschrieben 6. Juni 2008 Geschrieben 6. Juni 2008 Hmm kanns hier gerade nicht nachvollziehen, aber theoretisch müsste da der Compiler schon meckern, da er das nicht eindeutig zuordnen kann. Probiers doch einfach mal. Zitieren
TDM Geschrieben 6. Juni 2008 Geschrieben 6. Juni 2008 Hmm kanns hier gerade nicht nachvollziehen, aber theoretisch müsste da der Compiler schon meckern, da er das nicht eindeutig zuordnen kann. hmm, ja, macht er: Warnung 1 warning C4520: 'Test': Mehrere Standardkonstruktoren angegeben Fehler 2 error C2668: 'Test::Test': Mehrdeutiger Aufruf einer überladenen Funktion :floet: Zitieren
InfoJunkie Geschrieben 13. Juni 2008 Autor Geschrieben 13. Juni 2008 Cool, danke für den Einblick Leute. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.