Konvertierungsoperatoren in C
Frage: Wie funktionieren Konvertierungsoperatoren in C und wann versucht der Compiler den nach dem Konvertierungsoperator definierten Typ ersetzen?
Antwort: Konvertierungsoperatoren in C erleichtern Typkonvertierungen zwischen Klassen oder von Klassen in grundlegende Typen. Der Compiler ersetzt den nach dem Konvertierungsoperator angegebenen Typ in den folgenden Situationen:
Konvertierung während der Argumentübergabe:
- Während der Argumentübergabe gelten die Regeln für die Kopierinitialisierung gelten unter Berücksichtigung jeder Konvertierungsfunktion, unabhängig davon, ob sie in eine Referenz konvertiert wird oder nicht.
- Beispiel: void f(B); int main() { f(A()); }
Konvertierung in Referenz:
- In bedingten Operatoren ist die Konvertierung in einen Referenztyp möglich, wenn der Typ, in den konvertiert wird, ein L-Wert ist.
- Beispiel: B b; 0 ? b : A();
Konvertierung in Funktionszeiger:
- Konvertierungsfunktionen in Funktionszeiger oder Referenzen können verwendet werden, wenn ein Funktionsaufruf erfolgt gemacht.
- Beispiel: typedef void (*fPtr)(int); void foo(int a); struct test { Operator fPtr() { return foo; } };
Konvertierung in Nicht-Klassentypen:
- Benutzerdefinierte Konvertierungsfunktionen können für implizite Konvertierungen mit Nicht-Klassentypen verwendet werden .
- Beispiel: struct test { Operator bool() { return true; } };
Konvertierungsfunktionsvorlagen:
- Vorlagen können zum Erstellen von Konvertierungsfunktionen verwendet werden, mit denen ein Typ in einen beliebigen Zeigertyp konvertiert werden kann .
- Beispiel: struct test { template Operator T*() { return 0; } };
-
Achtung: Diese sollten mit Vorsicht verwendet werden, da sie zu mehrdeutigen Konvertierungen führen können.
Das obige ist der detaillierte Inhalt vonWie funktionieren Konvertierungsoperatoren in C und wann verwendet der Compiler sie zur Typersetzung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn