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


      Это не внешняя среда - читай выше - древовидный список ;)
        Цитата Мяут-Настоящий @
        А как const-метод может дать гарантии, что ничего не сделано до его вызова. Ессно гарантия const-метода распространяется на время от его вызова до завершения ;-)

        Он имел ввиду, не в параметре передавать this, а нампример завести еще один класс, у которого есть поле, ну что то типо того:

        ExpandedWrap disabled
          class My;
           
          class A
          {
             A()
             {
                m_my = new My;
                m_my->a = this;
             }
           
             void SomeFunc() const
             {
                m_my->ModifyA();
             }
             My* m_my;
          }
           
          class My
          {
          public:
           A* a;
           void ModifyA()
           {
             a->Set(10);
           }
          };

        Что то типо этого...
          Цитата --Ins-- @
          Цитата KILLER @
          и инициализировать его нашим объектом...


          Да, но не внутри const-метода. Это могло быть сделано ранее

          На самом деле это достаточно проблематично. Какой-то говнокод получится.
            Цитата D_KEY @
            Да, ибо никакие гарантии и контракты никто не нарушал.


            Ну так чего ты говоришь что не показал? Предали объект как константный, а его взяли и поменяли. Так?
              Цитата --Ins-- @
              Какойтодругойобъект.ЛюбойМетод; // И вот этот ЛюбойМетод может нас поменять? Параметром мы ему себя не передаем. Ссылка на нас у него и так есть - была присвоена когда-то раньше
              Так где взялся этот "Какойтодругойобъект"? Глобальный шоли?
                Цитата Мяут-Настоящий @
                Буду чесать голову, зачем мне два парсера опций ;)

                чтобы протестировать их обоих. =/

                либо у них разные реализации, подсовывать в зависимости от каких-то факторов
                  Цитата D_KEY @
                  Какой-то говнокод получится.


                  Госспади, вы никогда компоновщик не использовали? У меня в каждом проекте по сто раз. Древовидная структура, да блин, компоненты на форме древовидную иерархию образуют :) Пэрэнт-Чайлд :) Какой говнокод, акстись :D
                    Цитата KILLER @
                    void SomeFunc() const
                    {
                    m_my->ModifyA();
                    }
                    My* m_my;
                    }

                    class My
                    {
                    public:
                    A* a;
                    void ModifyA()
                    {
                    a->Set(10);
                    Если ModifyA() - неконстантный метод (как в этом примере), то вызывать его из константного SomeFunc() не получится. Если же константный, то тогда уже в нем нельзя вызвать неконстантный Set() для a
                      Цитата --Ins-- @
                      Паттерн компоновщик :)



                      ExpandedWrap disabled
                        class Insider {
                                int i;
                            public:
                                void DamnMutableFunction() { i = 1;}
                                int DamnConstantFunction() const { return i; }
                        };
                         
                        class External {
                                Insider I;
                            public:
                                External(Insider aI) : I(aI) {}
                         
                                void DamnMutableFunction() {  
                                    I.DamnMutableFunction();          //OK
                                    I.DamnConstantFunction();         //OK
                                }
                                void DamnConstantFunction() const {
                                    I.DamnMutableFunction();          //FAIL
                                    I.DamnConstantFunction();         //OK
                                }      
                        };
                        Цитата --Ins-- @
                        Госспади, вы никогда компоновщик не использовали? У меня в каждом проекте по сто раз. Древовидная структура, да блин, компоненты на форме древовидную иерархию образуют :) Пэрэнт-Чайлд :) Какой говнокод, акстись :D

                        кхм...
                        Цитата Повстанець @
                        Так где взялся этот "Какойтодругойобъект"? Глобальный шоли?
                          Мяут-Настоящий, что это? :D
                            Цитата Adil @
                            Если ModifyA() - неконстантный метод (как в этом примере), то вызывать его из константного SomeFunc() не получится. Если же константный, то тогда уже в нем нельзя вызвать неконстантный Set() для a

                            Ну так я это --Ins--'у и пояснял, просто мяут поначалу не понял, я для него приводил код, чтобы понятнее было что --Ins-- хочет увидеть...
                              Цитата --Ins-- @
                              Мяут-Настоящий, что это? :D

                              КакойтоДругойОбъект ™ по-сиплюсплюсному ;-D
                                Цитата --Ins-- @
                                Ну так чего ты говоришь что не показал? Предали объект как константный, а его взяли и поменяли. Так?
                                Кого поменяли то? Поменял-то ты какой то другой глобальный объект. Если же этот "какой-то-другой" объект является членом "текущего" объекта, то и вызвать для этого "какого-то-другого" объекта можно только константные методы.
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 54 55 [56] 57 58 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.1527 ]   [ 14 queries used ]   [ Generated: 29.07.26, 11:35 GMT ]