InfoJunkie Geschrieben 5. Juni 2008 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
InfoJunkie Geschrieben 5. Juni 2008 Autor Teilen Geschrieben 5. Juni 2008 Falsches Forum :floet:... Bitte verschieben, Danke! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 6. Juni 2008 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 6. Juni 2008 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
qat Geschrieben 6. Juni 2008 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 6. Juni 2008 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
InfoJunkie Geschrieben 13. Juni 2008 Autor Teilen Geschrieben 13. Juni 2008 Cool, danke für den Einblick Leute. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.