int(xxx) int{xxx} static_cast<int>(xxx)Si xxx est un entier ou un
enumou une constante, il n'y aura aucun appel de fonction. Si xxx est flottant non constant, il y aura appel d'un traitement de conversion. Si xxx est un type convertible en
int, il y aura l'appel de la fonction de conversion.
const double xxx = 3.14; int{xxx}; // ne compile pas car détecte un 'narrowing conversion' int(xxx); // fonction const : compile (int)xxx; // cast façon C : compile static_cast<int>(xxx); // cast C++ : compile int x = xxx; // conversion implicite, produit un warning
doubleen
int.
xxxest un objet convertible en
intles 5 conversions fonctionnent (sauf la dernière si la conversion est
explicit.)
xxxest un objet convertible en
short, aucune ne fonctionne car nécessite une double conversion :
xxx==>shortet
short==>int.