Pourquoi utiliser static_cast<int>(x) au lieu de (int)x ou int(x) en C++ ?
Bonjour ! J'ai récemment commencé à apprendre le C++ et j'ai remarqué que dans les vieux manuels et sur les forums, on utilise souvent cette syntaxe pour la conversion de types :
```cpp
double d = 3.14;
int i = (int)d; // C-style cast
// ou
int j = int(d); // functional-style cast
```
Mais ensuite j'ai vu que beaucoup de développeurs expérimentés écrivent plutôt comme ça :
```cpp
int k = static_cast(d);
```
Et ils disent que c'est la manière « correcte ». Je ne comprends pas vraiment la différence. Après tout, le résultat est le même partout — la partie fractionnaire est tronquée. Pourquoi écrire un long `static_cast(x)` si on peut simplement écrire `(int)x` ? N'est-ce pas juste du code gonflé ?
Ce qui me trouble particulièrement, ce sont les points suivants :
1. Y a-t-il des cas où `(int)x` ferait quelque chose d'inattendu, mais pas `static_cast` ?
2. Est-il vrai que le C-style cast est moins sûr ? Si oui, pourquoi le compilateur l'autorise-t-il ?
3. Cela affecte-t-il les performances ou n'est-ce qu'une question de style ?
Je serais reconnaissant pour une explication claire avec des exemples, de préférence sur des cas réels.