Syntaxe commune C++11 - utilisation spécifique de l'opérateur de conversion de type explicite

php是最好的语言
Libérer: 2018-07-26 13:54:49
original
2380 Les gens l'ont consulté

L'auteur a beaucoup réfléchi aux différences entre l'opérateur de conversion de type explicite et le livre C++ Primer et a fourni des exemples plus significatifs. Veuillez le comprendre attentivement.

Opérateur de conversion de type

Regardez l'exemple suivant :

Syntaxe commune C++11 - utilisation spécifique de lopérateur de conversion de type explicite

Ceci est le prototype d'une classe plurielle , Définit un opérateur de conversion de type pour le type double. Avec lui, vous pouvez l'utiliser comme suit :

Syntaxe commune C++11 - utilisation spécifique de lopérateur de conversion de type explicite

Le résultat de sortie est le suivant :

Syntaxe commune C++11 - utilisation spécifique de lopérateur de conversion de type explicite

complex n'est pas L'opérateur de sortie est pris en charge, le compilateur s'efforce donc de convertir c1 en un type double puis de le sortir. Jusqu'ici, tout va bien.

Voulez-vous vraiment convertir en double ?

Regardez à nouveau le code suivant :

Syntaxe commune C++11 - utilisation spécifique de lopérateur de conversion de type explicite

Si d'après les mathématiques D'un point de vue, il devrait produire 2,23606. Mais en fait, ce code ne peut même pas être compilé. La raison en est que le compilateur dispose de deux options pour ce code : l'une consiste à convertir c1 en un double puis à ajouter 1 ; l'autre consiste à convertir 1 en un nombre complexe (1+0i) puis à effectuer une addition complexe.

Besoin d'une idée d'un programmeur.

Opérateur de conversion de type explicite

Afin d'éliminer toute ambiguïté, une solution consiste à utiliser explicite pour désactiver la conversion de type double implicite. Le code est le suivant :

Syntaxe commune C++11 - utilisation spécifique de lopérateur de conversion de type explicite

La conversion de type implicite ne pouvant pas être effectuée, le code suivant provoquera une erreur de compilation :

Syntaxe commune C++11 - utilisation spécifique de lopérateur de conversion de type explicite

Ce n'est pas un gros problème, car il est difficile de dire si la conversion en double sortie est correcte ou non. Le code a fourni la fonction de sortie au pluriel grâce à la surcharge de l'opérateur de sortie.

Le résultat est le suivant :

Syntaxe commune C++11 - utilisation spécifique de lopérateur de conversion de type explicite

C'est ce que nous voulons vraiment !

Point supplémentaire

Si vous le souhaitez, vous pouvez également l'encoder comme ceci :

Syntaxe commune C++11 - utilisation spécifique de lopérateur de conversion de type explicite

Retrouvez cet article utile? S'il vous plaît, partagez-le avec plus de personnes.

Recommandations associées :

Opérateurs HTML, conversion de type

Conversion implicite et explicite personnalisée C#

Tutoriel Langage C

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal