Wie viele Konstruktoren hat die Klasse haben?

Ich bin der Vorbereitung für eine kommende C++ - Klausur und bin auf diese Frage zu Klassen und Konstruktoren:

Wie viele Konstruktoren hat die Klasse Anteil haben?"

class Fraction {
//...
public:
   Fraction(int numerator = 0, int denominator = 1);
//...
};

Dachte ich, es ist nur eine, aber Sie schlug es drei:

Fraction();
Fraction(n);
Fraction(n, d);

Oder in anderen Worten:

Ist eine Funktion mit default-Werten eine überladene Funktion?

  • Tatsächlich gibt es drei Aufruf-Varianten, die verwendet werden können, aber es gibt nur einen Konstruktor. Das ist entweder eine Fangfrage, oder fragte unklar. Sollte schon "Wie viele Konstruktor-Aufruf Kandidaten hat die Klasse Anteil haben?" Schlechte Frage anders, Klagen Sie, wenn Sie die Prüfung nicht besteht, weil der, dass :-P.
  • Für Ihre Frage, überladen, für was eigentlich?
  • Es gibt auch implizit deklariert kopieren und verschieben von Konstruktoren...
  • Es kommt darauf an, ob Sie hat Ihnen diesen 3-Konstruktor aufrufen, um zu "beweisen", dass es 3 Konstruktoren, wenn das der Fall ist Sie sind wahrscheinlich unzureichend. Sie haben wahrscheinlich die Antwort 3, die Grafen implizit generierte Konstruktoren als gut, aber ohne die Aufklärung oder das wissen, dass das der Fall ist, so warfen Sie, dass verwirrend Unsinn zu simulieren, Angemessenheit, in der Hoffnung, Sie erhalten Weg mit es und kommen Sie nicht zu Fragen, hier über SO 🙂
  • Blick auf die erzeugte Maschinen-code und Sie werden sehen, diese drei ruft alle rufen die gleiche routine - und der "Standard" - Argumente vorhanden sind (geschoben oder in den Registern, soweit angemessen) auf den Ruf Website. Also "Sie" sind falsch.
Schreibe einen Kommentar