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

    Конструктор CreateClass отработал, поверь ;)

    Цитата D_KEY @
    Конструктор не является методом объекта(и не может им являться, поскольку этот объект конструирует).

    В С++ да.

    Цитата D_KEY @
    Ты вызываешь метод предка до того, как он сумел обеспечить свои инварианты.

    Только если метод не затрагивает инварианты.

    Цитата D_KEY @
    В обсуждаемой Java такая же стратегия конструирования объектов.

    Серьёзно? И какой-нибудь "WriteLn(Self.ClassName)" в конструкторе базового класса нам выдаст его же имя, вместо производного?

    Цитата korvin @
    какой ужасный ужас

    Мы ещё не видели варианты на C++/C#/Java :)
      Ощущение дежа-вю...
        Цитата Flex Ferrum @
        Ощущение дежа-вю...

        Матрица опять глючит. Боюсь обернуться - вдруг там Смит с пистолетом :ph34r:
        Сообщение отредактировано: MyNameIsIgor -
          Цитата Flex Ferrum @
          Ощущение дежа-вю...

          Это всё D_KEY >:(
            Цитата DesweR @
            Цитата D_KEY @
            Как же он может быть создан, если конструктор еще не отработал

            Конструктор CreateClass отработал, поверь ;)

            А причем тут он, если речь об объекте, а не классе?

            Цитата
            Цитата D_KEY @
            Конструктор не является методом объекта(и не может им являться, поскольку этот объект конструирует).

            В С++ да.

            Причем тут язык? Если конструктор не конструирует, то это не конструктор.

            Цитата
            Цитата D_KEY @
            Ты вызываешь метод предка до того, как он сумел обеспечить свои инварианты.

            Только если метод не затрагивает инварианты.
            Откуда ты это знаешь, если метод не твоего класса, а производного? Конструктор же не отработал, следовательно, нельзя сказать, что инварианты выполнены.

            Цитата
            Цитата D_KEY @
            В обсуждаемой Java такая же стратегия конструирования объектов.

            Серьёзно? И какой-нибудь "WriteLn(Self.ClassName)" в конструкторе базового класса нам выдаст его же имя, вместо производного?
            Производного. И правильно сделает. А вот виртуальные методы несконструированного объекта вызывать странно.

            Добавлено
            Цитата DesweR @
            Цитата Flex Ferrum @
            Ощущение дежа-вю...

            Это всё D_KEY >:(

            Я всего-лишь сказал, что написано в некоторой книге(которую тут упомянул не я), у тебя же начался очередной батхерт и ты обвинил меня во лжи :)
              Цитата D_KEY @
              А причем тут он, если речь об объекте, а не классе?

              Он конструирует экземпляр класса.

              Цитата D_KEY @
              Причем тут язык? Если конструктор не конструирует, то это не конструктор.

              Да ладно?!

              Цитата D_KEY @
              Откуда ты это знаешь, если метод не твоего класса, а производного?

              Производный знает, иначе ССЗБ.

              Цитата D_KEY @
              Производного. И правильно сделает.

              Ну и где "такая же стратегия конструирования объектов"?

              Цитата D_KEY @
              Я всего-лишь сказал, что написано в некоторой книге(которую тут упомянул не я), у тебя же начался очередной батхерт и ты обвинил меня во лжи

              Какой невинный трололо :lool:

              Добавлено
              D_KEY
              Всё, давай закруглять разговор.

              Добавлено
              Лучше вот:
              Цитата DesweR @
              Мы ещё не видели варианты на C++/C#/Java
                Цитата DesweR @
                Цитата D_KEY @
                А причем тут он, если речь об объекте, а не классе?

                Он конструирует экземпляр класса.

                Конструирует не конструктор. Ок.

                Цитата
                Цитата D_KEY @
                Причем тут язык? Если конструктор не конструирует, то это не конструктор.

                Да ладно?!

                Ну как бы это следует из определения конструктора и его названия.

                Цитата
                Цитата D_KEY @
                Откуда ты это знаешь, если метод не твоего класса, а производного?

                Производный знает, иначе ССЗБ.

                Но производный не знает, что ты в своем конструкторе можешь дергать его методы.

                Цитата
                Цитата D_KEY @
                Производного. И правильно сделает.

                Ну и где "такая же стратегия конструирования объектов"?

                Такая же - там точно так же и в таком же порядке происходит конструирование, как я описал выше. Инициализацию таблиц виртуальных функций я не упоминал - там есть отличие. И Брюсу Эккелю как раз не нравится поведение в Java и он пишет, что в С++ этот момент продуман лучше. Это все, что я говорил. Цитаты я показал. С чем ты споришь? С Эккелем? Ну так ему и пиши :)

                Цитата
                Цитата D_KEY @
                Я всего-лишь сказал, что написано в некоторой книге(которую тут упомянул не я), у тебя же начался очередной батхерт и ты обвинил меня во лжи

                Какой невинный трололо :lool:

                А что, разве не так?

                Цитата
                D_KEY
                Всё, давай закруглять разговор.
                Давай :)

                Цитата
                Лучше вот:
                Цитата DesweR @
                Мы ещё не видели варианты на C++/C#/Java

                Не вижу смысла в таком поведении.
                Сообщение отредактировано: D_KEY -
                  Цитата D_KEY @
                  Ну как бы это следует из определения конструктора и его названия.

                  Код CreateClass вставляет сам компилятор (нам вообще незачем о нём знать), это точно также, как и в С++, только у вас он вставляется перед всеми конструкторами.

                  Цитата D_KEY @
                  Но производный не знает, что ты в своем конструкторе можешь дергать его методы.

                  Это следует из документации. Такой проблемы у меня вообще никогда не возникало или ты всегда переопределяешь вирт. методы не думая?

                  Цитата D_KEY @
                  Не вижу смысла в таком поведении.

                  Суть не в исключениях, вся изюминка в классовых ссылках, попробуешь реализовать посредством фабрик?
                    Цитата DesweR @
                    Мы ещё не видели варианты на C++/C#/Java :)

                    вообще мы уже выяснили, что в джаве искаробки идет проверка на неправильный порядок отлова исключений. меня это вполне устраивает. если подумать, то это даже лучше, чем автоматическая перестановка местами. гораздо лучше. ну а вторая часть вопроса в такой ситуации отпадает

                    Добавлено
                    в то время как делфи на такой код:
                    ExpandedWrap disabled
                      try
                        raise EDivByZero.Create('Error Message');
                      except
                        on e : Exception  do ShowMessage('Exception ' + e.Message);
                        on e : EDivByZero do ShowMessage('DivByZero ' + e.Message);
                      end;


                    даже хинта не выдает...

                    Добавлено
                    при том, что даже динамический CL позволяет выявлять такие ситуации в compile-time...
                    Скрытый текст

                    ExpandedWrap disabled
                      (defun already-caught (cond-type cases)
                        (labels ((test (case) (subtypep cond-type (car case))))
                          (some #'test cases)))
                       
                      (defmacro handler-case* (expression &body cases)
                        (loop :for ((cond-type . rest) . rest-cases) :on (reverse cases)
                              :when (already-caught cond-type rest-cases)
                              :do   (error "Condition ~a already cauth in:~%~a" cond-type rest-cases))
                        `(handler-case ,expression ,@cases))


                    компиляция такого файла:
                    ExpandedWrap disabled
                      (defun test-conditions ()
                        (handler-case* (signal (make-condition 'simple-error))
                          (error () 'error)
                          (simple-error () 'simple)))

                    не пройдет =)


                    Добавлено
                    и еще при том, что IDEA, например, сообщает о неправильном порядке еще во время редактирования кода и предлагает переставить более специфический кетч перед более общим =)
                    Сообщение отредактировано: korvin -
                      Цитата DesweR @
                      Цитата D_KEY @
                      Ну как бы это следует из определения конструктора и его названия.

                      Код CreateClass вставляет сам компилятор (нам вообще незачем о нём знать), это точно также, как и в С++, только у вас он вставляется перед всеми конструкторами.

                      Но у нас до вызова конструктора объекта нет - есть только память.

                      Цитата
                      Цитата D_KEY @
                      Не вижу смысла в таком поведении.

                      Суть не в исключениях, вся изюминка в классовых ссылках, попробуешь реализовать посредством фабрик?

                      Причем тут фабрики? А реализовывать подобные костыли я желания не испытываю :)

                      Добавлено
                      Цитата korvin @
                      и еще при том, что IDEA, например, сообщает о неправильном порядке еще во время редактирования кода и предлагает переставить более специфический кетч перед более общим =)

                      :good:
                        Цитата korvin @
                        и еще при том, что IDEA, например, сообщает о неправильном порядке еще во время редактирования кода и предлагает переставить более специфический кетч перед более общим =)

                        Ты что! За IDEA надо же бабло платить! Рассово верные делфисты работают только на пиратке, при этом бьют себя пяткой в грудь, что производитель на продаже делфи подымает бабло на её развитие.
                          Цитата Вуйко з полонини @
                          Ты что! За IDEA надо же бабло платить! Рассово верные делфисты работают только на пиратке, при этом бьют себя пяткой в грудь, что производитель на продаже делфи подымает бабло на её развитие.

                          Указанная мной возможность имеется и в бесплатной Community Edition, а если "Расово верные делфисты работают только на пиратке", то не побрезгуют и CE использовать в коммерческих целях =)
                            Цитата korvin @
                            даже хинта не выдает...

                            Пичально, но не критично.

                            Цитата D_KEY @
                            Но у нас до вызова конструктора объекта нет - есть только память.

                            А что у вас находится между вызовом конструктора и самим конструктором?
                            hint: "это" генерирует компилятор ;)

                            Цитата D_KEY @
                            А реализовывать подобные костыли я желания не испытываю

                            В С++ это не реализуемо.
                              Цитата DesweR @
                              Пичально, но не критично.

                              помнить наизусть дерево классов исключений всяко лучше, ясен пень

                              Добавлено
                              и при подключении сторонних модулей, содержащих свои классы исключений, в обязательном порядке изучать их, а не просто пользоваться
                              Сообщение отредактировано: korvin -
                                Цитата DesweR @
                                В С++ это не реализуемо.

                                Великий знаток плюсов детектед :huh:
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 273 274 [275] 276 277 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.4003 ]   [ 14 queries used ]   [ Generated: 1.08.26, 16:43 GMT ]