crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> Приведение типов C++/QT
ViGOur
  опции профиля:
сообщение 1.10.2008, 12:08
Сообщение #11


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(kuler @ 1.10.2008, 12:15) *
про static_cast и dynamic_cast написано не шибко правильно

Цитата(kuler @ 1.10.2008, 12:44) *
вломы писать, там много, труп страуса почитайте
дело в том, что если так говоришь, то нужно описать, что именно не так! Иначе лучше просто промолчать... ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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  


Цитата(kuler @ 1.10.2008, 18:04) *
Исправляйте репутацию.
все в твоих руках.
Вот тема, в ней конкретные сообщения. Поправь их, добавь точности или укажи где ошибка и как должно быть, чтобы было без ошибки.

принесешь полезную информацию, репутация поднимится
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 2.10.2008, 13:15
Сообщение #14


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Цитата(kuler @ 1.10.2008, 18:04) *
static_cast срабатывает на этапе компиляции, проверяет типы на подобность, dynamic_cast срабатывает на этапе выполнения...

Я этому где-нибудь противоречил?
Перечитай внимательно что я написал. :)

Я не описывал поведение обоих приведений а всего лишь утверждал о их взаимозаменимости в частном случае.
Или ты можешь привести пункт стандарта, который запрещает то, о чём я написал?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 2.10.2008, 15:26
Сообщение #15


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


Цитата(Tonal @ 2.10.2008, 14:15) *
Цитата(kuler @ 1.10.2008, 18:04) *
static_cast срабатывает на этапе компиляции, проверяет типы на подобность, dynamic_cast срабатывает на этапе выполнения...

Я этому где-нибудь противоречил?
Перечитай внимательно что я написал. :)

Я не описывал поведение обоих приведений а всего лишь утверждал о их взаимозаменимости в частном случае.
Или ты можешь привести пункт стандарта, который запрещает то, о чём я написал?

да я не тебе написал, а первому сообщению
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_Barabas_*_*
сообщение 2.6.2012, 12:32
Сообщение #16





Гости








    


Благодарю за эту информацию! Искал именно это=)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 4.6.2012, 7:28
Сообщение #17


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(kuler @ 1.10.2008, 17:04) *
Исправляйте репутацию.

готово!

==============================

моё ИМХО

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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V  < 1 2
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 16.4.2024, 17:15