Quando usar reinterpret_cast em C++ e como ele difere de outras conversões?
Olá, colegas! Estou estudando C++ e já me saí bem com static_cast e dynamic_cast. Mas o reinterpret_cast me causa dúvidas e até medo. Eu entendo que é uma conversão "maligna" que apenas reinterpreta os bits, mas quando realmente deve ser usada?
Eu vi alguém no código fazendo assim:
```cpp
int* p = new int(42);
char* cp = reinterpret_cast(p);
```
Mas para quê? Afinal, pode-se simplesmente pegar o endereço e trabalhar com ele. Ou então este exemplo com conversão de ponteiro para função:
```cpp
typedef void (*FuncPtr)();
FuncPtr f = reinterpret_cast(0x12345678);
```
Isso é legal? Parece-me que reinterpret_cast é um hack que viola o sistema de tipos. Mas sei que ele está no padrão, então deve ter usos legítimos.
Por favor, me digam em quais situações reais o reinterpret_cast é a escolha correta e segura? Quando seu uso é justificado, e quando é melhor usar static_cast ou outras conversões? E com
No answers yet.
Faça login para deixar uma resposta
Blogs