На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 475 476 [477] 478 479 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата Flex Ferrum @
    Справедливости ради отмечу, что джависты дружно фапают на паттерны.

    Цитата Flex Ferrum @
    А не применять бездумно просто потомушта.

    :yes: Соглашусь с обеими утверждениями.

    Добавлено
    Но иметь представление о паттернах нужно.
      Цитата [S]mike @
      Но иметь представление о паттернах нужно.

      Безусловно. Но проектировать нужно в первую очередь исходя из требований, а не притягивать за уши известные и не очень паттерны. Впрочем, это уже оффтоп.
        Цитата MyNameIsIgor @

        Не до конца уверен, что понимаю Qraizer'а, но судя по всему он имел в виду operator new.

        насколько я понимаю порядок такой:

        оператор Child::new();
        заполняем VMT указателями на методы Base()
        Base()
        заполняем VMT указателями на методы Child()
        Child();


        Так ??
          Цитата jack128 @
          Так ??

          Нет.
          1. Выделяет память нужного размера.
          2. Вызывает поверх выделенного куска нужный конструктор класса.
            Цитата jack128 @
            оператор Child::new();
            заполняем VMT указателями на методы Base()
            Base()
            заполняем VMT указателями на методы Child()
            Child();


            Так ??

            Ну, только не заполняем VMT, а проставляем указатель на соответствующий VMT, который один на тип.

            Добавлено
            Цитата Flex Ferrum @
            Нет.
            1. Выделяет память нужного размера.
            2. Вызывает поверх выделенного куска нужный конструктор класса.

            Это по Стандарту так. В реализациях всё же есть vtbl.
              Цитата MyNameIsIgor @
              В реализациях всё же есть vtbl.

              Это ответственность конструктора, а не оператора new.
                Цитата Flex Ferrum @
                Это ответственность конструктора, а не оператора new.

                Так а вроде jack128 и не говорил, что new. Просто перечислил по шагам.
                  Цитата MyNameIsIgor @
                  Так а вроде jack128 и не говорил, что new. Просто перечислил по шагам.

                  Тогда у Джек'а совсем неправильная логика. Потому что никакого Child::new() не вызывается.
                    Цитата Flex Ferrum @
                    Тогда у Джек'а совсем неправильная логика. Потому что никакого Child::new() не вызывается.

                    А откуда материализуется память?
                      Цитата MyNameIsIgor @
                      А откуда материализуется память?

                      Внезапно её возвращает operator new(). :) Ты его никогда не реализовывал самостоятельно? :) new не инициализирует объект. Он только память под него выделяет. А инициализирует всё так же конструктор.
                        Цитата Flex Ferrum @
                        никакого Child::new() не вызывается

                        Цитата Flex Ferrum @
                        Внезапно её возвращает operator new()

                        Очевидно, что это внезапно только для того, кто пишет такие взаимоисключающие параграфы.
                        Цитата Flex Ferrum @
                        new не инициализирует объект. Он только память под него выделяет. А инициализирует всё так же конструктор.

                        Спасибо, конечно, кэп, но мы знали, ага...
                          MyNameIsIgor, ну тогда пиши свой правильный вариант. :)
                            Цитата Flex Ferrum @
                            MyNameIsIgor, ну тогда пиши свой правильный вариант

                            :wacko: Правильный вариант чего? На вопрос jack128 я ответил.
                              Цитата Flex Ferrum @
                              Это ответственность конструктора

                              в коде конструктора никаких заполнений указателей на VMT нету. значит компилер сам как то выставляет этот указатель.

                              что технически мешало сделать так:

                              вызов оператора Child::new()
                              указатель на VMT = VMT класса Child()
                              Base()
                              Child()

                              ?
                                Цитата jack128 @
                                что технически мешало сделать так:

                                вызов оператора Child::new()
                                указатель на VMT = VMT класса Child()
                                Base()
                                Child()

                                ?

                                Логически мешало, а не технически. Во время конструирования Base объект Child ещё не создан. Следовательно, его методы полезут к не сконструированным мемберам. Итог подобного в деструкторе буквально только что описывал Chow.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 475 476 [477] 478 479 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.6184 ]   [ 15 queries used ]   [ Generated: 28.07.26, 18:42 GMT ]