Ну, чтобы было ясно, они делают то же самое.
Теперь, если вы конвертировали из const base *
в const derived *
, только последний будет действительным, а для первого также потребуется const_cast
. Если бы вы конвертировали из base *
в derived *
, действительным был бы только первый, так как в противном случае вам пришлось бы отбрасывать const
-несс, только что добавленный вашим кастом.
Я бы предпочел избегать использования модификаторов const
в приведении, если это явно не нужно. Другими словами, держите код настолько простым, насколько позволяет компилятор.
Конечно, вы должны использовать dynamic_cast<>
вместо static_cast<>
в этом сценарии, если b
может быть экземпляром другого производного класса.