Приведение типов C++/QT |
Здравствуйте, гость ( Вход | Регистрация )
Приведение типов C++/QT |
ViGOur |
1.10.2008, 12:08
Сообщение
#11
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
|
|
|
kuler |
1.10.2008, 14:04
Сообщение
#12
|
Танцор диско Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: -1 |
static_cast срабатывает на этапе компиляции, проверяет типы на подобность, dynamic_cast срабатывает на этапе выполнения проверяя реально ли можно приравнять объекты, кроме того объекты должны быть полиморфны, нельзя приравнивать void*.
Исправляйте репутацию. |
|
|
Litkevich Yuriy |
1.10.2008, 14:13
Сообщение
#13
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Tonal |
2.10.2008, 13:15
Сообщение
#14
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
static_cast срабатывает на этапе компиляции, проверяет типы на подобность, dynamic_cast срабатывает на этапе выполнения... Я этому где-нибудь противоречил? Перечитай внимательно что я написал. Я не описывал поведение обоих приведений а всего лишь утверждал о их взаимозаменимости в частном случае. Или ты можешь привести пункт стандарта, который запрещает то, о чём я написал? |
|
|
kuler |
2.10.2008, 15:26
Сообщение
#15
|
Танцор диско Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: -1 |
static_cast срабатывает на этапе компиляции, проверяет типы на подобность, dynamic_cast срабатывает на этапе выполнения... Я этому где-нибудь противоречил? Перечитай внимательно что я написал. Я не описывал поведение обоих приведений а всего лишь утверждал о их взаимозаменимости в частном случае. Или ты можешь привести пункт стандарта, который запрещает то, о чём я написал? да я не тебе написал, а первому сообщению |
|
|
Гость_Гость_Barabas_*_* |
2.6.2012, 12:32
Сообщение
#16
|
Гости |
Благодарю за эту информацию! Искал именно это=)
|
|
|
Алексей1153 |
4.6.2012, 7:28
Сообщение
#17
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Исправляйте репутацию. готово! ============================== моё ИМХО 1) использование static_cast иногда может быть вполне оправдано - для подстраховки на этапе компиляции. 2) Необходимость использования dynamic_cast: a ) признак кривого проектирования. Равно как и явное приведение к void* и из него - тоже такой признак b ) при поддержке чужого запутанного кода - это подстраховка в реалтайме (можно всегда результат каста проверить на ноль) Поэтому лучше проектировать так, чтобы кастить через этот оператор не было необходимости. Кроме того, для возможности применения dynamic_cast класс обязан иметь хотя бы одну виртуальную функцию, что не всегда приемлимо 3 ) Необходимость использования reinterpret_cast : см. п 2)a) . Но ещё иногда требуется, к примеру, при взамодействии с ранее написанным кодом на чистом си (пример - WinAPI , извещения WM_NOTIFY от стандартных контролов) Критика принимается Сообщение отредактировал Алексей1153 - 7.6.2012, 7:04 |
|
|
Текстовая версия | Сейчас: 16.1.2025, 6:13 |