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

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

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

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


  2. Вверх #2
    pHp-ProGRaMMeR Аватар для NoXX
    Пол
    Мужской
    Возраст
    34
    Сообщений
    1,690
    Репутация
    320
    Ето на каком языке?
    In TRANCE I trust...

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

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

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

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

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

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

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

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

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

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

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

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

  14. Вверх #14
    Посетитель Аватар для [MavericK]
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    37
    Сообщений
    165
    Репутация
    17
    ...ЭЭЭ Прикольно
    kind


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

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

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

Ваши права

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