Одесса: 8°С (вода 9°С)
Киев: 2°С
Львов: 9°С

Тема: Kрасиво, не правда ли?

Ответить в теме
Показано с 1 по 14 из 14
  1. Вверх #1
    Не покидает форум Аватар для Ull9
    Пол
    Мужской
    Адрес
    Мюнхен
    Сообщений
    18,454
    Репутация
    1112
    Записей в дневнике
    1

    По умолчанию Kрасиво, не правда ли?

    assert( dynamic_cast<MyType *>(p) == static_cast<MyType *>(p) );
    MyType *p = static_cast<MyType *>(p);


  2. Вверх #2
    Ето на каком языке?
    In TRANCE I trust...

  3. Вверх #3
    Новичок Аватар для JackTheHack
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    28
    Сообщений
    69
    Репутация
    15
    Не парся и пиши на Дельфи.
    Эт всё равно что англиский.

  4. Вверх #4
    Постоялец форума Аватар для Николай
    Пол
    Мужской
    Адрес
    Los Angeles
    Возраст
    33
    Сообщений
    1,470
    Репутация
    100
    Это не красиво, ты Пролог не видел.
    /dev/gmaker

  5. Вверх #5
    Постоялец форума Аватар для andriyBog
    Пол
    Мужской
    Адрес
    Одеса, Україна
    Возраст
    36
    Сообщений
    1,695
    Репутация
    1373
    И что?
    Всё равно никто ничего не понял,
    для этого и существуют коментарии, научись пользоваться ими сначала

  6. Вверх #6
    Посетитель Аватар для traveller
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    34
    Сообщений
    171
    Репутация
    25
    прикольно,
    это ты задвинул, чтоб и при компиляции и при выполнении проги приведение с проверкой выполнялось?
    и шо, работает?

  7. Вверх #7
    Постоялец форума Аватар для Николай
    Пол
    Мужской
    Адрес
    Los Angeles
    Возраст
    33
    Сообщений
    1,470
    Репутация
    100
    прикольно, при компиляции разве что-то выполняется? Когда я делал компилятор для С, в моё время компиляторы только компилировали...
    /dev/gmaker

  8. Вверх #8
    Посетитель Аватар для traveller
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    34
    Сообщений
    171
    Репутация
    25
    я не знаю в какое это свое время... но сегодня
    static_cast (в отличие от dynamic_cast) выполняется исключительно во время компиляции, и потому часть проверок осуществлять не может и не будет.

  9. Вверх #9
    Постоялец форума Аватар для Николай
    Пол
    Мужской
    Адрес
    Los Angeles
    Возраст
    33
    Сообщений
    1,470
    Репутация
    100
    Не буду спорить, давно на Сях не кодил, но не совсем понял что там делает компилятор кроме сборки кода.
    /dev/gmaker

  10. Вверх #10
    Посетитель Аватар для traveller
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    34
    Сообщений
    171
    Репутация
    25
    Ну например, если компилятор вдруг узнает (как раз с помощью static_cast) что ты пытаешься сделать приведение типов, не находящихся в отношении базовый -> порожденный, то он тебе скажет об этом. А dynamic_cast (если сможет) проверит - действительно объект порождённого класса, и что указатель - на базовый (но это уже на этапе выполнения)
    Вообщем, я не препод, толком объяснить не сумею
    :)

  11. Вверх #11
    Не покидает форум Аватар для Ull9
    Пол
    Мужской
    Адрес
    Мюнхен
    Сообщений
    18,454
    Репутация
    1112
    Записей в дневнике
    1
    Kрасота в следующем

    Приведенный фрагмент делает и быстро и надежно даункаст. Т.е. каст вниз по иерархии. Динамок каст хорош тем, что при неверном кастинге вернет ноль поинтер, а статик каст всегда что то вернет. Ну и теперь дилемма, что применять? Более быстрое (статик каст) или более надежное (динамик каст).
    Вот эта мини-идиома и позволяет делать и быстро и надежно.
    Все основано на том, что асерт во время рилиз компиляции просто уберется.

  12. Вверх #12
    Постоялец форума Аватар для Пилигрим
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    31
    Сообщений
    1,215
    Репутация
    134
    Цитата Сообщение от Николай
    Это не красиво, ты Пролог не видел.
    +1. В прологе реально такие хитрые вещи пишуться в пару строчек...
    А зато элементарный для императивных языков, пишуться на пол экрана Ж)

  13. Вверх #13
    Живёт на форуме Аватар для firejump
    Пол
    Мужской
    Сообщений
    3,160
    Репутация
    361
    Цитата Сообщение от JackTheHack
    Не парся и пиши на Дельфи.
    Эт всё равно что англиский.
    Совет по теме Вы б ещё на HTML посоветовали писать
    Viva La Barca !!! We are the champions :)

  14. Вверх #14
    Посетитель Аватар для [MavericK]
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    30
    Сообщений
    186
    Репутация
    14
    ...ЭЭЭ Прикольно
    Religion can never reform mankind, because religion is slavery.


Ответить в теме

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения