Zum Inhalt springen

Klassendesign: Konstruktor mit vorbelegten Parametern


Empfohlene Beiträge

Geschrieben

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? :)

Geschrieben
Wer hat nun recht? :)
Dein Bauch.

Dein Hirn irrt insoweit, als gar kein automatischer Defaultkonstruktor angelegt wird, sobald du selbst irgendeinen Konstruktor deklarierst.

Geschrieben
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?

Geschrieben

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. ;)

Geschrieben
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:

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...