На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (245) « Первая ... 221 222 [223] 224 225 ...  244 245  ( Перейти к последнему сообщению )  
> Есть ли будущее у DELPHI?
    Цитата --Ins-- @
    Если я напишу Obj.Destroy (или Free, который вызывает Destroy внутри себя) - это деструктор, он вызовет не только тело Destroy, но и освободит память (TObject.FreeInstance). Если же я напишу inherited Destroy в перекрытом деструкторе потомка этого класса - это вызов Destroy как обычного метода, т.е. просто будет выполнено пустое тело. А память будет освобождена уже после отработки даже моего тела Destroy

    Цитата Wound @
    Ну блин у вас и трешняк...

    :D
      Цитата D_KEY @
      Классическая висячая ссылка получается.


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

      Добавлено
      Цитата D_KEY @
      Ну блин у вас и трешняк...


      На самом деле все логично и интуитивно понятно :D Просто для тебя - это ново
        Цитата --Ins-- @
        На самом деле все логично и интуитивно понятно :D Просто для тебя - это ново

        Я надеюсь, что могу оценить красоту или ущербность того или иного нового для меня архитектурного решения :)
        Сообщение отредактировано: D_KEY -
          Цитата Wound @
          тогда почему в примере korvin небыло AV?
          Ну это просто повезло, пример-то тестовый. Сам объект в куче все еще существует, не перезатерт другим объектом.
            Цитата --Ins-- @
            На самом деле все логично и интуитивно понятно

            Не, вызов виртуальных методов из конструкторов и деструкторов, которое может привести к вызову метода, у которого уже был вызван деструктор и соответствующие методы очистки - ни разу не логично :) Равно как и вызов деструктора для не полностью сконструированного объекта.
              Цитата --Ins-- @
              Просто для тебя - это ново
              Почему паскалисты/дельфисты пытаются себя убеждать, что паскаль/дельфи и их фичи - это что-то доселе невиданное и уму непостижимое для их оппонентов?
              Сообщение отредактировано: trainer -
                Цитата trainer @
                Ну это просто повезло, пример-то тестовый. Сам объект в куче все еще существует, не перезатерт другим объектом.

                Да я уже понял. Я просто поначалу подумал что там и память не освобождается физически при вызове FreeAndNil.
                  Цитата OpenGL @
                  Равно как и вызов деструктора для не полностью сконструированного объекта.

                  Да же формулировки пошли как в прошлых холиварах :) Не работает :'(
                    Цитата D_KEY @
                    Я надеюсь, что могу оценить красоту или ущербность того или иного нового для меня архитектурного решения


                    А если бы вместо Obj.Destroy писалось бы destroy Obj (чтобы не было похоже на вызов метода), что бы это принципиально поменяло? :D
                      Кстати, в С++ теперь можно добиться вызова деструктора в случае исключения в конструкторе через делегирующий конструктор, это тоже уже обсуждали.
                        Цитата OpenGL @
                        Не, вызов виртуальных методов из конструкторов и деструкторов, которое может привести к вызову метода, у которого уже был вызван деструктор и соответствующие методы очистки - ни разу не логично Равно как и вызов деструктора для не полностью сконструированного объекта.


                        Это из-за того, что значения слов "коструктор/деструктор" в дельфи отличается от плюсовых представлений :D
                          Цитата --Ins-- @
                          Для того, для кого ссылка на объект - это эквивалент объекта - да, так проще и понятнее

                          Тебе напомнить, что в Делфи у объектов ссылочная семантика?

                          Цитата --Ins-- @
                          А что, должно быть как-то иначе? Ссылка должна волшебным образом обнуляться?

                          Почему волшебным? Самым обычным.
                          ExpandedWrap disabled
                            (struct object (slots) #:mutable)
                             
                            (define (new)
                              (object (make-hasheq)))
                             
                            (define (free o)
                              (set-object-slots! o 'nil))
                             
                            (define (nil? o)
                              (eq? (object-slots o) 'nil))
                             
                            (define (main)
                              (define a (new))
                              (define b a)
                              (free a)
                              (displayln (nil? a))
                              (displayln (nil? b)))

                          ExpandedWrap disabled
                            > (main)
                            #t
                            #t


                          Цитата --Ins-- @
                          Это следствие отсутствия автоматической сборки мусора для объектов, в этих условиях иначе сделать нельзя никак.

                          Сборка мусора тут совершенно не при чем. При чем лишь устройство указателей. Ничто не мешает реализовать в языке с ручным управлением памятью чуть более косвенные указатели. Или хотя бы устройство объекта.
                          Сообщение отредактировано: korvin -
                            Цитата D_KEY @
                            Кстати, в С++ теперь можно добиться вызова деструктора в случае исключения в конструкторе через делегирующий конструктор, это тоже уже обсуждали.

                            Ну, это логично. Было бы хуже, если бы деструктор не вызывался. И не надо забывать, что мы либо инициализируем поля, либо делегируем их инициализацию другому конструктору - смешать не получится.
                              Цитата --Ins-- @
                              Это из-за того, что значения слов "коструктор/деструктор" в дельфи отличается от плюсовых представлений

                              Ну, что в Дельфи все не как у людей, мы уже поняли :)
                                Цитата trainer @
                                Почему паскалисты/дельфисты пытаются себя убеждать, что паскаль/дельфи и их фичи - это что-то доселе невиданное и уму непостижимое для их оппонентов?


                                Потому что они доселе это не видели и не понимают как это работает, и как-то не особо скрывают этого. Есть какие-то обрывочные сведения через призму своего восприятия, но когда узнают детали - удивляются, вот как сейчас - в десятый раз как в первый :D
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (245) « Первая ... 221 222 [223] 224 225 ...  244 245


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,2170 ]   [ 15 queries used ]   [ Generated: 20.07.25, 18:24 GMT ]