Ist das explizite Schlüsselwort für einen Konstruktor erforderlich, der mehr als einen Parameter verwendet?

8

Diese Frage bezieht sich auf den vorhergehenden Standard von C ++ 11 (C ++ 03). explicit verhindert implizite Konvertierungen von einem Typ zu einem anderen. Zum Beispiel:

%Vor%

Wenn wir einen Konstruktor haben, der zwei oder mehr Parameter akzeptiert, was wird explicit verhindern? Ich verstehe, dass Sie in C ++ 11 die Initialisierung versperrt haben, so dass Konstruktionen wie:

verhindert werden %Vor%

Aber in C ++ 03 haben wir keine Initialisierung, also welche Art von Konstruktion ist das explicit Schlüsselwort, das hier verhindert?

    
template boy 19.03.2015, 13:38
quelle

2 Antworten

4
  

Wenn wir einen Konstruktor haben, der zwei oder mehr Parameter akzeptiert, was wird explicit verhindern?

Nichts.

    
Lightness Races in Orbit 19.03.2015, 14:01
quelle
5

Es könnte interessant sein, wenn jemand die Signatur Ihrer Methode mit einem Standardparameter ändert:

%Vor%

Mit dem Schlüsselwort explicit sagen Sie idiomatisch, dass ein Konstruktor niemals eine implizite Konvertierung durchführen soll.

    
neuro 19.03.2015 13:46
quelle

Tags und Links