Partager via


Conversions

Les objets d'un type donné de classe peuvent être convertis en objets d'un autre type.Cela est fait en construisant un objet du type cible de classe du type de classe de source et en copiant le résultat à l'objet cible.ce processus est appelé conversion par le constructeur.Les objets peuvent également être convertis uniquement par les fonctions fournies par l'utilisateur de conversion.

Lorsque les conversions standard (décrites dans Conversions standard) ne peuvent pas complètement convertir un type donné à un type de classe, le compilateur peut sélectionner des conversions définies par l'utilisateur pour vous aider complet du travail.Outre les conversions de type explicite, les conversions ont lieu lorsque :

  • Une expression d'initialiseur n'est pas le même type que l'objet initialisé.

  • Le type d'argument utilisé dans un appel de fonction ne correspond pas au type d'argument spécifié dans la déclaration de fonction.

  • Le type de l'objet qui est retourné depuis une fonction ne correspond pas au type de retour spécifié dans la déclaration de fonction.

  • deux opérandes d'expression doivent être du même type.

  • une expression contrôlant une instruction d'itération ou de sélection requiert un type différent de celui fourni.

Une conversion définie par l'utilisateur est appliquée uniquement si elle est ambiguë ; sinon, un message d'erreur est générée.L'ambiguïté est activée au point de l'utilisation.Par conséquent, si les fonctionnalités qui permettent à l'ambiguïté ne sont pas utilisées, une classe peut être définie avec des ambiguïtés potentielles et ne générer des erreurs.Bien qu'il y a de nombreuses situations dans lesquelles les ambiguïtés surviennent, ce sont les deux causes menantes les ambiguïtés :

  • Un type de classe dérivée à l'aide de l'héritage multiple, et il est vague de la classe de base pour sélectionner la conversion (voir l' ambiguïté).

  • Un opérateur de conversion de type explicite et un constructeur de la même conversion existent (consultez fonctions de conversion).

La conversion par le constructeur et la conversion par des fonctions de conversion sont conformes aux règles de contrôle d'accès, comme décrit dans Contrôle d'accès de membre.Le contrôle d'accès est testé une fois la conversion s'avère non équivoque.

Pour plus d'informations, consultez constructeurs de conversion.

Voir aussi

Référence

Fonctions membres spéciales (C++)