Преобразование типов
В связи с тем, что С++ является строго типизированным языком, лучшая практика в преобразовании типов - избегать преобразований. Часто, если появляется необходимость в преобразовании типов (не задуманная программистом), значит, в программе есть какие-то проблемы.
Так как язык С++ является наследником языка С, то в программах С++ можно использовать преобразование типов в стиле С. Однако, данное преобразование типов является небезопасным, так как позволяет использовать заведомо неправильные конструкции, например:
Компилятор языка С++ в данном случае не выдаст ошибку, не смотря на то, что представлено заведомо неправильное преобразование указателей.
Для написания безопасного кода в язык С++ были введены 4 оператора преобразования типов, такие как:
static_cast - используется для преобразования
статическихпеременных базового типа или сравнимых указателей (например, указатель на объект родительского класса в указатель на объект дочернего класса). Пример использования:const_cast - используется при преобразовании неконстантных выражений в константые и наоборот. Не рекомендуется к использованию! Данный оператор позволяет , в частности, изменять выражения, определённые как константные.
dynamic_cast - используется для преобразования указателей. Чаще всего можно обойтись без данного преобразования. Пример использования:
reinterpret_cast - по поведению совпадает с преобразованием типов в стиле С. Не рекомендуется к использованию!
Last updated