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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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