implicit-conversion

___ qstnhdr ___ Warum ist die Adresse dieser flüchtigen Variablen immer bei 1? ___ answer8239294 ___

iostreams werden die meisten Zeiger auf %code% für die Anzeige darstellen - aber für %code% Zeiger existiert keine Konvertierung. Daher fällt C ++ auf die implizite Umwandlung in %code% zurück. Cast to %code% explizit, wenn Sie die Adresse ausdrucken möchten:

%Vor%     
___ answer39773280 ___

Dies liegt daran, dass es für %code% keine Überladung gibt, die einen Zeiger auf %code% nimmt, und es keine Zeigerkonvertierung gibt, die sie erfüllen könnte.

Gemäß dem C ++ - Standard

  

für jeden Typ %code% , Pointer auf %code% , Pointer auf %code% und Pointer auf %code% werden als unterschiedliche Parameter angesehen, ebenso wie der Verweis auf %code% , der Verweis auf %code% und der Verweis zu %code% .

Operator %code% hat keine Überladung für Zeiger auf nicht-statische Elemente , Zeiger auf flüchtige Zeiger oder Funktionszeiger, also versucht die Ausgabe solcher Objekte die implizite Konvertierung in %code% .

    
___ tag123implicitumversion ___ Konvertieren eines Objekts, einer Variablen oder eines Werts von einem Typ in einen anderen, um eine Typeinschränkung zu erfüllen, ohne diese Konvertierung explizit über die Sprachsyntax anzufordern. ___ qstntxt ___

Ich wollte die Adresse meiner Variablen überprüfen

%Vor%

Aber es sagt immer, dass x an Adresse 1 ist. Mache ich etwas falsch?

    
___ tag123iostream ___ Die C ++ iostream-Bibliothek ist eine objektorientierte Bibliothek, die über Streams Ein- und Ausgabefunktionen bereitstellt. Die Iostreams-Klassen unterstützen typsichere I / O-Typen und können zur Unterstützung benutzerdefinierter Typen durch Überladen der Operatoren >> und << erweitert werden. ___ answer8240080 ___

Es gibt ein %code% für %code% , aber es gibt kein %code% für %code% , und die implizite Konvertierung wird %code% nicht entfernen (es wird auch %code% nicht entfernen).

Wie GMan sagt, sollte die cv-Qualifikation des angegebenen Typs für das Drucken einer Adresse irrelevant sein. Vielleicht sollte die in 27.7.3.6.2 definierte Überlast %code% sein, ich kann keinen Nachteil sofort sehen. Aber es ist nicht.

%Vor%

Ausgabe:

%Vor%     
___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___ tag123memoryaddress ___ Eine Nummer, die einen bestimmten Ort im Computerspeicher angibt. Kann auch auf den Zugriff auf diese Adressen im Speicher verweisen. ___ tag123cout ___ std :: cout ist das globale Stream-Objekt, das von der C ++ - Standardbibliothek zum Schreiben in den Standard-Ausgabestream bereitgestellt wird. ___
2
Antworten

Implementieren von Multiparameter-C ++ - Vorlage wie Verhalten bei C # mithilfe von Richtlinienmuster

Ich versuche, eine C ++ - ähnliche Vorlage mit C # -Generika und einem Richtlinienmuster basierend auf dieser Antwort zu implementieren > Dies ist ein Beispiel für das Muster: %Vor% Mein beabsichtigtes Verhalten ist wie folgt: %Vor%...
16.03.2016, 22:33
2
Antworten

C ++ implizite Konvertierungen mit geschweiften Initialisierern

Ich habe kürzlich irgendwo gelesen (kann mich nicht erinnern, wo), geschweifte Klammern zu verwenden, um mehrere benutzerdefinierte Konvertierungen zu erlauben, aber es scheint einen Unterschied zwischen Konversion durch Konstruktor und Konverti...
27.05.2016, 11:40
2
Antworten

Wie unterscheidet man die vom Compiler abgeleitete implizite Konvertierung von der explizit aufgerufenen?

Stellen wir uns vor, diese beiden äquivalenten Ausdrücke an ein Scala-Makro zu übergeben: mit vom Compiler abgeleiteter impliziter Konvertierung: 1+"foo" mit explizit aufgerufener impliziter Konvertierung: any2stringadd(1)+"foo" G...
19.03.2013, 19:26
1
Antwort

Scala mehrere implizite Konvertierungen?

Ich verstehe das scheinbar widersprüchliche Verhalten nicht, das ich im folgenden Code sehe (Scala 2.9): %Vor% Die Zeile '5.0.pluss (Some (5.0))' kompiliert, aber die Zeile danach kompiliert nicht mit der folgenden Fehlermeldung:    Überl...
04.10.2012, 16:08
2
Antworten

C ++ - Konvertierung Funktion Vorlage Abzug, warum funktioniert das?

%Vor% Dieser Code funktioniert für clang 3.7, gcc 5.1 und vc ++ 14.2. 2 Probleme, 1. Warum kann Vorlage den Typ A :: B ableiten? (So ​​schlau!) Soweit ich weiß, leiten Sie den Typ durch eine Rückgabeanweisung anstelle eines Parameters ab. A...
23.09.2016, 10:53
1
Antwort

Implizite Konvertierungen für defs / lambdas in Scala?

Ich bin gerade in eine seltsame Disparität zwischen Funktionen und Objekten geraten (Scala 2.10): %Vor% Warum gibt es einen Unterschied zwischen Defs / Lambda Literalen und Lambda Vals? Update: Offensichtlich tritt das Problem nicht für b...
11.02.2015, 09:07
1
Antwort

Welche impliziten Konvertierungen werden bei Verwendung von Operatoren unterstützt?

Ich habe eine Struktur: %Vor% Und jetzt kann ich tun: %Vor% Es scheint, dass der Compiler schlau genug ist, um Decibel in double zu konvertieren, und dann den Operator < für Doppel zu verwenden? Ich hatte eine andere stru...
29.04.2015, 08:54
2
Antworten

Scala: generische gewichtete Durchschnittsfunktion

Ich möchte eine allgemeine gewichtete Durchschnittsfunktion implementieren, die die Anforderungen an die Werte und die Gewichte vom gleichen Typ lockert. dh ich möchte Sequenzen von sagen: (value:Float,weight:Int) und (value:Int,weight:Float...
13.04.2017, 01:52
3
Antworten

Warum ist die Adresse dieser flüchtigen Variablen immer bei 1?

Ich wollte die Adresse meiner Variablen überprüfen %Vor% Aber es sagt immer, dass x an Adresse 1 ist. Mache ich etwas falsch?     
23.11.2011, 08:44
3
Antworten

Unterschied zwischen impliziter Konvertierung und expliziter Konvertierung [duplizieren]

Was ist der Unterschied zwischen "impliziter Konvertierung" und "expliziter Konvertierung"? Ist der Unterschied in Java und C ++ anders?     
25.09.2011, 07:31