На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> получить указатель на производный класс , из указателя на виртуальный базовый
    аналогично этому

    ExpandedWrap disabled
      C* pc = dynamic_cast< C *>( pa );


    и вооПче это же логическая ошибка !?
      Цитата
      Sazabis, 22.01.04, 16:00
      аналогично этому
      C* pc = dynamic_cast< C *>( pa );
      и вооПче это же логическая ошибка !?

      Нет, не аналогично. По той простой причине, что dynamic_cast в этом случае тебе вернет NULL (если кастишь указатели), или выбросит исключение bad_cast, если кастишь ссылки.
      На счет логической ошибки. В приведенном примере - да. А предположим, что ты передаешь pa в метод, где это pa кастится до одного из потомков? Там такая ошибка не столь очевидна.
        ну теперь, вообще, почти все :) понятно B)

        А если взять отдельный класс, внутри его методов я как его разработчик, обязуюсь отследить все неровности и шероховатости. Не использование dynamic_cast внутри этих методов позволит мне кое в чем выграть. Есть ли в этом грубая ошибка ?
          Цитата
          Sazabis, 22.01.04, 16:45
          А если взять отдельный класс, внутри его методов я как его разработчик, обязуюсь отследить все неровности и шероховатости. Не использование dynamic_cast внутри этих методов позволит мне кое в чем выграть. Есть ли в этом грубая ошибка ?

          Скорее, некрасивость. И в этом случае, если и кастить - то через C-style cast, и ни вкоем случае не использовать reinterpret_cast. В ряде случаев можно static_cast, но только для случаев downcast'а.
            Цитата
            Flex_Ferrum, 22.01.04, 16:49
            Скорее, некрасивость


            да, в коде не очень красиво :(

            Цитата
            Flex_Ferrum, 22.01.04, 16:49
            И в этом случае, если и кастить - то через C-style cast


            через него

            Цитата
            Flex_Ferrum, 22.01.04, 16:49
            ни вкоем случае не использовать reinterpret_cast.


            не, конечно, обойдусь ;)

            Цитата
            Flex_Ferrum, 22.01.04, 16:49
            В ряде случаев можно static_cast, но только для случаев downcast'а


            а это еще зачем ? тут то какие проблемы ?
              Цитата
              Sazabis, 22.01.04, 17:10
              Цитата
              Flex_Ferrum, 22.01.04, 16:49
              В ряде случаев можно static_cast, но только для случаев downcast'а


              а это еще зачем ? тут то какие проблемы ?

              Дополнительный контроль на этапе компиляции.
                Цитата
                Sazabis, 22.01.04, 13:45
                Не использование dynamic_cast внутри этих методов позволит мне кое в чем выграть.



                Не стоит с этим заморачиваться. Богатая практика различных людей доказала - оптимизировать нужно алгоритмы, а не микромоменты. Прибавка производительности таким путем оптимизации чаще всего несущественна по сравнению с трудозатратами на нее и проблемами, которая она создает. Хотя, конечно, как развлечение это в каком-то смысле интересно, но в реальных продуктах акценты обычно другие.
                  Цитата
                  Fantasist, 23.01.04, 01:08
                  Хотя, конечно, как развлечение это в каком-то смысле интересно,


                  Добавлено в :
                  Вобщем, все понятно стало. Всем спасибо за внимание, особо AlexSm, и особо-особо :) Flex_Ferrum, в частности за 17 пост B)

                  Награждаю оных плюсиками :) считаю тему закрытой
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0298 ]   [ 16 queries used ]   [ Generated: 27.04.24, 09:36 GMT ]