Maison > développement back-end > C++ > Comment fonctionnent les opérateurs de conversion en C et quand le compilateur les utilise-t-il pour la substitution de type ?

Comment fonctionnent les opérateurs de conversion en C et quand le compilateur les utilise-t-il pour la substitution de type ?

Patricia Arquette
Libérer: 2024-11-20 00:13:02
original
322 Les gens l'ont consulté

How do conversion operators work in C   and when does the compiler use them for type substitution?

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal