Y a-t-il une différence entre la ligne 2 et la ligne 3 dans le code suivant? Qu'est-ce que le compilateur dans chaque cas strong>? en général, quelle est la différence entre la coulée et la conversion (en C et C ++)? p> p>
4 Réponses :
Les deux sont des conversions / moulages, à la ligne 2, il est simplement implicite, tandis que sur la ligne 3, il est explicite, il n'y a pas de différence fonctionnelle. P>
Il n'y a pas de différence dans l'effet final. P>
a casting strong> est d'utiliser une notation explicite, générale et intégrée à la conversion. p>
Bien que dans certains cas, nous disons "élever" lorsque nous entendons une conversion implicite de dérivée * à la base * (ou de dérivée et à base de base et). P>
Et dans certains cas, on définit une nouvelle notation de moulage. p>
La définition ci-dessus de la terminologie n'est qu'une définition opérationnelle, c'est-à-dire que ce n'est pas une définition où vous pouvez raisonner que quelque chose est un casting. Les moulages sont juste ceux qui sont définis comme des moulages. :-) Par exemple, en C ++ Vous pouvez et de préférence utiliser les cases nommées Cela dit, le meilleur est d'éviter les moulages au degré possible. P>
acclamations et hth., p> bool (x) code> est une coulée, tandis que
!! x code>, qui fait la même notation et une notation explicite, n'est pas une distribution. p>
static_cast code>,
const_cast code>,
dynamic_cast code> et
REINIERPRET_CAST CODE>, avec une éventuelle exception pour la coulée explicite des types intégrés arithmétiques. Une des raisons est qu'un style c style
(autre *) p code> ou dans la notation spécifique au C ++
AutresPtr (p) code>, peut faire différentes choses en fonction du contexte, et notamment , lorsque le code est légèrement modifié, la signification d'une distribution de style C peut changer. Une autre raison est qu'il est difficile de rechercher des moulages de style C. p>
Le résultat final est le même (c'est-à-dire que votre intégration est valorisée à 65 ans).
Maintenant, la ligne 3 permet au lecteur (ou qui peut avoir à maintenir le code) - pour repérer le CAST C; qui est dans mon humble opinion un plus.
Si ce code fait partie d'une application C ++, il serait encore préférable d'utiliser static_cast pendant au moins 2 raisons:
p>
J'espère que cela aide li> ol>
Une conversion est le processus em> de convertir des données d'un type à un autre. Un casting est un opérateur em> qui provoque une conversion (sauf dans le cas où les types correspondent déjà). in c, la plupart des cases sont inutiles em> et considérées mauvaises Style em>. En C ++, des moulages de style C sont considérés par beaucoup comme un style mauvais; C ++ a un système de distribution plus sûr, mais comme je n'utilise pas C ++, je laisserai les autres à expliquer. P> Au fait, dans votre exemple: P> char ch = (char)'A';
Référez-vous Ce et il devrait clarifier votre doute
.. Cette discussion est en C # Contexte..maybe en C et C ++, la coulée et la conversion diffèrent légèrement des autres langues ...
Désolé, mis à jour mon message
.. Merci pour la mise à jour.. :-)