static_cast<> и dynamic_cast<> за и против
Есть ли это выход в усложняющемся мире программирования
Хотелось бы узнать, что думают об этом форумчане.
Есть ли это выход в усложняющемся мире программирования
Хотя бы узнать - все-таки это в ms-компиляторах есть или во всех.
И что это вообще - стандарт или просто особенность реализации
Хотя бы узнать - все-таки это в ms-компиляторах есть или во всех.
И что это вообще - стандарт или просто особенность реализации
Это стандарт C++.
static_cast и reinterpret_cast использовать предпочтительнее, чем просто скобки (), т.к. преобразование получается более определенным и наглядным.
dynamic_cast использовать не рекомендую, т.к. он тащит за собой RTTI.
Так не всегда же известно, какой объект лежит под указателем на интерфейс (например).
Так не всегда же известно, какой объект лежит под указателем на интерфейс (например).
Ну так раз не известно, значит и не надо знать (см. основы ООП).
Ну так раз не известно, значит и не надо знать (см. основы ООП).
ну да использование RTTI считается не очень удачным решением, но иногда очень сложно найти решение без использования RTTI. я даже зависимость вывел : если вы используете RTTI значит у вас нет законченной теории предметной области. )))
ну да использование RTTI считается не очень удачным решением, но иногда очень сложно найти решение без использования RTTI. я даже зависимость вывел : если вы используете RTTI значит у вас нет законченной теории предметной области. )))
Без использования RTTI можно создать метод getClassID или т.п.
Без использования RTTI можно создать метод getClassID или т.п.
Интересно, чем отличается простое приведение типа вроде
(int*)i
от
static_cast<int*>i
Что происходит при этом?
Интересно, чем отличается простое приведение типа вроде
(int*)i
от
static_cast<int*>i
Что происходит при этом?
Это не "простое" приведение типов, а приведение в стиле С.
В С++ оно будет приведено либо как static_cast, либо как reinterpret_cast, но как именно "решит" компилятор. Поэтому, как я уже говорил, лучше явно указывать, как ты хочешь приводить.
Это не "простое" приведение типов, а приведение в стиле С.
В С++ оно будет приведено либо как static_cast, либо как reinterpret_cast, но как именно "решит" компилятор. Поэтому, как я уже говорил, лучше явно указывать, как ты хочешь приводить.
static_cast вызывает какую-либо дополнительную нагрузку на ЭВМ - суммирование, умножение.
Или он работает на программы компилятор и линковщик в процессе склеивания программы.
Т.е. мы знаем что за функицей sin стоит вполне опред. код. Что стоит за static_cast?