Opérateurs de conversion en C
Question : Comment fonctionnent les opérateurs de conversion en C et quand le compilateur tente-t-il remplacer le type défini après l'opérateur de conversion ?
Réponse : Les opérateurs de conversion en C facilitent les conversions de types entre classes ou de classes vers des types fondamentaux. Le compilateur remplace le type spécifié après l'opérateur de conversion dans les situations suivantes :
Conversion lors du passage d'argument :
- Lors du passage d'argument, les règles d'initialisation de la copie s'applique, en considérant n'importe quelle fonction de conversion, qu'elle soit convertie ou non en référence.
- Exemple : void f(B); int main() { f(A()); >
Conversion en référence :
- Dans les opérateurs conditionnels, la conversion en un type de référence est possible si le type en cours de conversion est une lvalue.
- Exemple : Bb; 0 ? b : A();
Conversion en pointeurs de fonction :
- Les fonctions de conversion en pointeurs de fonction ou en références peuvent être utilisées lorsqu'un appel de fonction est made.
- Exemple : typedef void (*fPtr)(int); void foo(int a); struct test { opérateur fPtr() { return foo; } };
Conversion en types non-classe :
- Les fonctions de conversion définies par l'utilisateur peuvent être utilisées pour les conversions implicites impliquant des types non-classe .
- Exemple : struct test { Operator bool() { return true ; } };
Modèles de fonctions de conversion :
- Les modèles peuvent être utilisés pour créer des fonctions de conversion permettant à un type d'être convertible en n'importe quel type de pointeur. .
- Exemple : struct test { template opérateur T*() { return 0; } };
-
Attention : Ceux-ci doivent être utilisés avec prudence car ils peuvent conduire à des conversions ambiguës.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn