Voici deux extraits très similaires:Devrais-je utiliser static_cast dans les affectations et les déclarations de retour et pourquoi?
vector<int> a;
int n = static_cast<int>(a.size());
// ---------
int f(const vector<int>& a) {
return static_cast<int>(a.size());
}
Ici, je convertir explicitement une valeur de type size_t
à taper int
. Si j'omets static_cast
alors la même distribution s'applique implicitement.
De quel type cette distribution implicite serait-elle? Est-il prudent d'omettre static_cast
dans les affectations explicites et les déclarations de retour?
Je préférerais changer le type de n et le type de retour de f ainsi coulé ne sera pas nécessaire. Mais si vous devez utiliser un type incompatible, la distribution explicite est prefferebale pour montrer qu'il se passe quelque chose de louche sur cette ligne. Et le compilateur approprié avec les paramètres warnig de haut niveau ne permettra pas à ce code de compiler sans lancer –