Quando usar static_cast, dynamic_cast, const_cast e reinterpret_cast em C++?
Olá! Acabei de começar a aprender C++ e não consigo entender a conversão de tipos. Parece que existem quatro operadores diferentes: static_cast, dynamic_cast, const_cast e reinterpret_cast. Mas quando usar qual — é uma confusão total.\n\nPor exemplo, quero converter double para int. Não posso simplesmente escrever (int)value, como em C? Para que serve o static_cast?\n\nOu então esta situação: tenho uma hierarquia de classes e quero converter um ponteiro para a classe base em um ponteiro para a classe derivada. Ouvi dizer que para isso se usa dynamic_cast, mas ele só funciona com funções virtuais. E se elas não existirem? Posso usar static_cast?\n\nTambém me confunde o const_cast. Sei que ele pode "remover" a constância. Mas isso não é perigoso? E para que pode ser necessário modificar um objeto constante?\n\nE o mais assustador