Maison  >  Article  >  développement back-end  >  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
Patricia Arquetteoriginal
2024-11-20 00:13:02271parcourir

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:
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