1. C++ / Говнокод #14396

    +3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    class Base
    {
      void fooo() { ... }
    };
    class Derived
    {
      void fooo() { ... }
    };
    void DoSmth (Base& b)
    {
      b.fooo();
    };
    Derived d; 
    DoSmth(d); // полная статика, так что там внутри вызовется метод базы
    void DoSmth (polymorth<Base>& b) // это структура, которая хранит ссылку на объект и ссылку на таблицу методов
    {
      b.fooo();
    };
    polymorth<Base>b = Derived(); 
    // инициализация при объявлении, чтобы было понятно, сколько памяти выделить
    // в структуре записалась таблица методов Derived
    DoSmth(b);  // вызовется метод наследника
    ...
    // в конце вызывается деструктор наследника

    Творчество оттуда.
    "Основная идея - избавить от вопроса "делать ли деструктор виртуальным"

    Запостил: LispGovno, 22 Января 2014

    Комментарии (16) RSS

    • Не в этом суть, но мне интересно как он приватные методы планировал вызывать из Base в DoSmth.
      Ответить
    • >polymorth
      Моментально. В море.
      Ответить
    • Один мой друг, он стоил двух, он ждать не привык;
      Был каждый день последним из дней.
      Он пробовал на прочность этот мир каждый миг -
      Мир оказался прочней.
      Ну что же, спи спокойно, позабытый кумир,
      Ты брал свои вершины не раз,

      Не стоит прогибаться под изменчивый мир -
      Пусть лучше он прогнется под нас,
      Однажды он прогнется под нас.
      Ответить
      • > Ты брал свои вершины не раз,
        Тарас
        Продолжит это дело за вас.
        Ответить
    • это мой креатив на тему моего разговора с Бормандом
      Ответить
      • Кстати, как переводится polymorth? Гугл говорит, что вторая часть - это что-то на валлийском, но всё равно не может её перевести.
        Ответить
        • множественная смерть?
          Ответить
          • видимо...
            наверное, это как кошка с 9 жизнями
            Ответить
            • кошка с девятью смертями
              Ответить
              • Мертвая кошка. Жизни кончились ;(
                Ответить
              • >кошка с 9 жизнями
                >кошка с 9 смертями
                Эрвин сидел в пустой лаборатории. По выражению его лица было понятно, что он поглощен невероятной мыслью.
                Вдруг сквозь очки промелькнул блеск глаз. Он лениво потянулся за листом бумаги, и стал писать записку лаборанту, в которой упоминались некие девять ящиков специального устройства.
                Ответить
                • Ну фу таким быть. Эрвин был теоретиком и по лабораториям не сидел. Особенно в одиночестве
                  Ответить
                  • >>Ну фу таким быть.
                    Фу быть занудой, и придираться к букве.
                    Хуже придирчивого зануды может быть только зануда невежественный:

                    >>Эрвин был теоретиком и по лабораториям не сидел
                    За время обучения в университете Шрёдингер в совершенстве овладел математическими методами физики, однако его диссертационная работа была экспериментальной. Она была посвящена изучению влияния влажности воздуха на электрические свойства ряда изоляционных материалов (стекло, эбонит, янтарь) и была выполнена под руководством Эгона Швейдлера в лаборатории Экснера
                    wiki
                    Ответить
      • > это мой креатив
        Зачем ты это высрал то?
        У вас была проблема. Вы решили ее при помощи Тараса. Теперь у вас много проблем.
        Ответить
        • Что значит зачем? Это от меня не зависит.
          Ответить
          • > > Зачем ты это высрал то?
            > Это от меня не зависит.
            Понос, сэр.
            Ответить

    Добавить комментарий