Ich habe vor kurzem über die explicit
Spezifizierer erfahren.Wann sollte der explizite Spezifizierer für Konstruktoren mit mehreren Argumenten verwendet werden?
Angenommen, wir haben:
f(W, W, W);
Wenn wir nun
f(42, 3.14, "seven");
Der Compiler tun die folgenden impliziten Konvertierungen versuchen:
f(W(42), W(3.14), W("seven"));
Wenn wir passende Konstrukteuren für W definiert haben , nämlich:
W(int);
W(double);
W(std::string);
... wird es gelingen.
Wenn wir jedoch die ersten explizit zu machen:
explicit W(int);
... dies deaktiviert die implizite Konvertierung.
Sie müssten jetzt schreiben:
f(W(42), 3.14, "seven");
dh es Sie zwingt ausdrücklich die Umwandlung zu erklären
Nun zu der Frage:
Es ist möglich, zu schreiben:
explicit W(int,int); // 2 arguments!
Th ist kompiliert!
Aber ich kann kein entsprechendes Szenario sehen, das diese Syntax erfordern könnte.
Kann jemand ein minimales Beispiel zur Verfügung stellen?
Ein Teil davon könnte nur aus Gründen der Konsistenz sein, da Multiparameterfunktionen auch Standardwerte haben können, z. explizite W (int, int = 0); '. – Rufflewind