Unterschied zwischen impliziter Konvertierung und expliziter Konvertierung [duplizieren]

7

Was ist der Unterschied zwischen "impliziter Konvertierung" und "expliziter Konvertierung"? Ist der Unterschied in Java und C ++ anders?

    
saplingPro 25.09.2011, 07:31
quelle

3 Antworten

17

Bei einer expliziten Konvertierung verwenden Sie eine Syntax, um dem Programm zu sagen, dass es eine Konvertierung durchführen soll. Zum Beispiel (in Java):

%Vor%

Bei einer impliziten Konvertierung erfolgt die Konvertierung ohne Syntax. Zum Beispiel (in Java):

%Vor%

Es sollte beachtet werden, dass (in Java) Konvertierungen, die primitive Typen beinhalten, im Allgemeinen eine Änderung der Darstellung mit sich bringen, was zu einem Verlust der Genauigkeit oder zum Verlust von Informationen führen kann. Im Gegensatz dazu ändern Konvertierungen, bei denen nur Referenztypen verwendet werden, die grundlegende Darstellung nicht.

  

Ist der Unterschied in Java und C ++ anders?

Ich kann mir das nicht vorstellen. Offensichtlich werden die verfügbaren Konvertierungen unterschiedlich sein, aber die Unterscheidung zwischen "implizit" und "explizit" wird gleich sein. (Anmerkung: Ich bin kein Experte für die C ++ - Sprache ... aber diese Wörter haben eine natürliche Bedeutung im Englischen und ich kann mir nicht vorstellen, dass die C ++ - Spezifikationen sie in einem widersprüchlichen Sinn verwenden.)

    
Stephen C 25.09.2011, 07:39
quelle
2

Sie meinen Casting? Implizit bedeutet, dass Sie eine Instanz des Typs B übergeben, die von einem Typ erbt, sagen Sie A als A.

Zum Beispiel:

%Vor%

Es gibt tatsächlich andere Arten von impliziten Castings - zwischen Primitiven, die Standardkonstruktoren verwenden. Sie müssen mit Ihrer Frage spezifischer sein.

implizit mit Standardkonstruktor:

%Vor%     
Ben 25.09.2011 07:38
quelle
0

Casting ist eine explizite Typkonvertierung, die im Code angegeben ist und zum Zeitpunkt der Kompilierung nur sehr wenigen Regeln unterliegt. Casts können unsicher sein; Sie können zur Laufzeit fehlschlagen oder Informationen verlieren.
Implizite Konvertierung ist eine Typkonvertierung oder eine primitive Datenkonvertierung, die vom Compiler durchgeführt wird, um Regeln zur Datenpromotion zu entsprechen oder die Signatur einer Methode anzupassen. In Java werden nur sichere implizite Konvertierungen durchgeführt: Upcasts und Werbung. \

Ich würde auch vorschlagen, über die implizite C ++ - Version zu lesen: Ссылка

    
Baz1nga 25.09.2011 07:40
quelle