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


    В полях он у него был записан ;)
      korvin, посмотрел твой последний плюсик от --Ins--'а. Возвращаясь к теме модулей в C++: мне очень доставляет в питоне писать такие костыли как:
      ExpandedWrap disabled
        import OptionParser
        op = OptionParser.OptionParser() #ЩИТО, у меня в глазах двоится?
         
        или:
         
        from OptionParser import OptionParser


      В этом смысле разделение логического представления (файлы) и физического (классы и неймспейсы) все таки чуточку более кошерно
        --Ins--, есл это тебя интересует, то хаки возможны. const - это механизм логики, а не "физики".
          Цитата D_KEY @
          А как это связано с const?
          Интерфейс объекта не меняется. Просто ты говоришь: "я не буду менять состояние этого объекта". Затем, если ты скажешь "измени объект", то компилятор скажет тебе: "незя".
          Так понятно?

          ну не знаю, это Повстанецъ заявил, что раз в делфи нет const, то он нифига не оопшный, а процедурный.

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


            Какой хак? Что я незаконного сделал то? :D
              Цитата --Ins-- @
              Цитата D_KEY @
              А как он будет изменен, если ты его туда не передавал?


              В полях он у него был записан ;)

              Эмм.. Это возможно только хаком, который приведет к неопределенному поведению для случая изначально константного объекта(в С++ можно объявлять константы любых типов, не только встроенных):
              ExpandedWrap disabled
                const MyClass my_constant("aaa", 10);


              Кстати, чем вызвано ограничение на константы пользовательских типов в Delphi?
                D_KEY, идея константных объектов может и замечательная, но реализовать ее так, увы, невозможно :) Никто тебе не гарантирует ничего, ты можешь только надеяться. Так и говори "я надеюсь", а не "мне гарантировано". :D Я же говорю, никто не гарантирует неизменность объекта - это исключительно на совести программиста. Если нужно чтобы объект не изменялся - не передавай ссылку на него, передай значения нужных параметров
                  Цитата --Ins-- @
                  В полях он у него был записан ;)
                  Да. А ещё есть const_cast, смена значения через указатель и смещение, юнион-каст, reinterpret_cast тоже даёт богатое поле для экспериментов, ассемблерные вставки, хекс редактор и ещё целая куча таких же фееричных возможностей нарушить инкапсуляцию через задницу.
                  Сообщение отредактировано: Повстанець -
                    Цитата --Ins-- @
                    Цитата D_KEY @
                    --Ins--, есл это тебя интересует, то хаки


                    Какой хак? Что я незаконного сделал то? :D

                    Пока ничего :) Но пытаешься найти лазейку. Стандартных - две. Одна "правильная", другая приводит к UB.
                      Цитата Мяут-Настоящий @
                      korvin, посмотрел твой последний плюсик от --Ins--'а. Возвращаясь к теме модулей в C++: мне очень доставляет в питоне писать такие костыли как:
                      ExpandedWrap disabled
                        import OptionParser
                        op = OptionParser.OptionParser() #ЩИТО, у меня в глазах двоится?
                         
                        или:
                         
                        from OptionParser import OptionParser


                      В этом смысле разделение логического представления (файлы) и физического (классы и неймспейсы) все таки чуточку более кошерно

                      как будто С++ мешает иметь
                      ExpandedWrap disabled
                        Foo::Foo

                      ты же видел пример Пайка с одной строкой кода С++, в которой 7 раз встречается слово Foo, обозначающее разные сущности? а питонисты такие питонисты (я про авторов этого модуля)
                      Сообщение отредактировано: korvin -
                        Цитата --Ins-- @
                        D_KEY, идея константных объектов может и замечательная, но реализовать ее так, увы, невозможно :) Никто тебе не гарантирует ничего, ты можешь только надеяться. Так и говори "я надеюсь", а не "мне гарантировано". :D Я же говорю, никто не гарантирует неизменность объекта - это исключительно на совести программиста.

                        :wall: Тебе же объяснили, как С++ компилятор это гарантирует.
                          Цитата Повстанець @
                          Да. А ещё есть const_cast, смена значения через указатель и смещение, юнион-каст, reinterpret_cast тоже даёт богатое поле для экспериментов, ассемблерные вставки, хекс редактор и ещё целая куча таких же фееричных возможностей нарушить инкапсуляцию через задницу.


                          Заметь, я на уровень указателей и ассемблерных вставок не опускался, я остался на уровне абстракции объектов ;) И нарушил, нет, не инкапсуляцию, она тут ни причем... А вашу "гарантию" :D
                            Цитата korvin @
                            как будто С++ мешает иметь

                            Не мешает. Но и не обязывает.
                            Цитата korvin @
                            а питонисты такие питонисты (я про авторов этого модуля)

                            Дык как быть, если модуль реализует всего один класс? :-)
                              --Ins--, покажи пример, в котором бы "легально"(без грязных хаков) компилятор давал изменять константные объекты?

                              Добавлено
                              Цитата --Ins-- @
                              Цитата Повстанець @
                              Да. А ещё есть const_cast, смена значения через указатель и смещение, юнион-каст, reinterpret_cast тоже даёт богатое поле для экспериментов, ассемблерные вставки, хекс редактор и ещё целая куча таких же фееричных возможностей нарушить инкапсуляцию через задницу.


                              Заметь, я на уровень указателей и ассемблерных вставок не опускался, я остался на уровне абстракции объектов ;) И нарушил, нет, не инкапсуляцию, она тут ни причем... А вашу "гарантию" :D

                              Когда? Ты ничего не нарушил еще.

                              Добавлено
                              Когда ты передашь ссылку на объект в другой объект?
                                D_KEY, я может чего не понял? Сначала, ты говоришь о невозможности изменить объект, который в подпрогрмму передается с const? Или о чем речь?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 51 52 [53] 54 55 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.1460 ]   [ 16 queries used ]   [ Generated: 29.07.26, 10:52 GMT ]