Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

static_cast<> и dynamic_cast<> за и против

284
29 мая 2006 года
michael_is_98
587 / / 25.02.2005
Хотелось бы узнать, что думают об этом форумчане.
Есть ли это выход в усложняющемся мире программирования
284
31 мая 2006 года
michael_is_98
587 / / 25.02.2005
Цитата:
Originally posted by michael_is_98
Хотелось бы узнать, что думают об этом форумчане.
Есть ли это выход в усложняющемся мире программирования


Хотя бы узнать - все-таки это в ms-компиляторах есть или во всех.
И что это вообще - стандарт или просто особенность реализации

1.8K
31 мая 2006 года
_const_
229 / / 26.11.2003
Цитата:
Originally posted by michael_is_98
Хотя бы узнать - все-таки это в ms-компиляторах есть или во всех.
И что это вообще - стандарт или просто особенность реализации



Это стандарт C++.

3
31 мая 2006 года
Green
4.8K / / 20.01.2000
dynamic_cast использовать не рекомендую, т.к. он тащит за собой RTTI.

static_cast и reinterpret_cast использовать предпочтительнее, чем просто скобки (), т.к. преобразование получается более определенным и наглядным.
395
01 июня 2006 года
RelB
367 / / 09.11.2002
Цитата:
Originally posted by Green
dynamic_cast использовать не рекомендую, т.к. он тащит за собой RTTI.


Так не всегда же известно, какой объект лежит под указателем на интерфейс (например).

3
01 июня 2006 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by RelB
Так не всегда же известно, какой объект лежит под указателем на интерфейс (например).


Ну так раз не известно, значит и не надо знать (см. основы ООП).

351
02 июня 2006 года
PitxBull
633 / / 22.12.2004
Цитата:
Originally posted by Green
Ну так раз не известно, значит и не надо знать (см. основы ООП).


ну да использование RTTI считается не очень удачным решением, но иногда очень сложно найти решение без использования RTTI. я даже зависимость вывел : если вы используете RTTI значит у вас нет законченной теории предметной области. )))

3
02 июня 2006 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by PitxBull
ну да использование RTTI считается не очень удачным решением, но иногда очень сложно найти решение без использования RTTI. я даже зависимость вывел : если вы используете RTTI значит у вас нет законченной теории предметной области. )))


Без использования RTTI можно создать метод getClassID или т.п.

284
02 июня 2006 года
michael_is_98
587 / / 25.02.2005
Цитата:
Originally posted by Green
Без использования RTTI можно создать метод getClassID или т.п.


Интересно, чем отличается простое приведение типа вроде
(int*)i
от
static_cast<int*>i

Что происходит при этом?

3
02 июня 2006 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by michael_is_98
Интересно, чем отличается простое приведение типа вроде
(int*)i
от
static_cast<int*>i

Что происходит при этом?


Это не "простое" приведение типов, а приведение в стиле С.
В С++ оно будет приведено либо как static_cast, либо как reinterpret_cast, но как именно "решит" компилятор. Поэтому, как я уже говорил, лучше явно указывать, как ты хочешь приводить.

284
02 июня 2006 года
michael_is_98
587 / / 25.02.2005
Цитата:
Originally posted by Green
Это не "простое" приведение типов, а приведение в стиле С.
В С++ оно будет приведено либо как static_cast, либо как reinterpret_cast, но как именно "решит" компилятор. Поэтому, как я уже говорил, лучше явно указывать, как ты хочешь приводить.


static_cast вызывает какую-либо дополнительную нагрузку на ЭВМ - суммирование, умножение.
Или он работает на программы компилятор и линковщик в процессе склеивания программы.
Т.е. мы знаем что за функицей sin стоит вполне опред. код. Что стоит за static_cast?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог