Поскольку это было помечено как C ++, а не C, я также рекомендую прочитать о приведениях в стиле C ++ относительно приведений в стиле C:
static_cast<Derived *>(pBase)->DMethod();
if (dynamic_cast<Derived *>(pBase)) dynamic_cast<Derived *>(pBase)->DMethod();
const_cast<CRect &>(constRect).x = 3;
int *pInt = reinterpret_cast<int *>(charbuff);
Я настоятельно рекомендую книгу Скотта Майера «Эффективный C ++, 55 конкретных способов улучшить ваши программы и разработки», 3-е издание, которая очень хорошо объясняет это. Удостоверьтесь, что вы получаете 3-е издание, хотя во 2-м издании также могут быть представлены приведения в стиле C ++.
По сути, если вы используете C ++ и ваш компилятор был написан в течение последних 10 лет, НИКОГДА не используйте приведение в стиле C. Используйте приведения в стиле C ++.