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?
InfoJunkie Geschrieben 5. Juni 2008 Autor Geschrieben 5. Juni 2008 Falsches Forum :floet:... Bitte verschieben, Danke!
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.
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?
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.
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:
InfoJunkie Geschrieben 13. Juni 2008 Autor Geschrieben 13. Juni 2008 Cool, danke für den Einblick Leute.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden