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

      Да хоть десять, если все поля расположены в одной секции - порядок расположения гарантирован.
        Цитата korvin @
        Конечно. Собственно речь шла о том, что если захочешь, то сделаешь(пусть и не по стандарту, а для конкретного компилятора). Язык не может защитить от глупости или преднамеренных хаков.

        Кто-то с этим спорит? Я только не могу понять одно: зачем в шарпе нужно было вообще разрешать доступ к приватным полям?
        Цитата korvin @
        т.е. никакой гаранттии инкапсуляции классы не дают? замечательно...

        Едрить... А как классы связаны с вашем незнанием языка?
          Цитата D_KEY @
          Да хоть десять, если все поля расположены в одной секции - порядок расположения гарантирован.
          Внутри одной - да. Раскиданные по десяти - нет.
          Цитата
          The order of allocation of nonstatic data members separated by an access-specifier is unspecified.
          Сообщение отредактировано: trainer -
            Цитата D_KEY @
            Да хоть десять, если все поля расположены в одной секции - порядок расположения гарантирован.

            Гррррр!
            ExpandedWrap disabled
              class A
              {
                int x;
              public:
                int y;
              };

            В памяти сначала может идти x, а может и наоборот.
            ExpandedWrap disabled
              class A
              {
              public:
                int x;
              public:
                int y;
              };

            Если честно, не помню считается ли это одной секцией... Но это не важно! Если одна, то в памяти будет x, y, что может не совпадать с вариантом y, x первого кода. Если это две секции, то опять у нас два варианта. Так понятно?
              Цитата MyNameIsIgor @
              Если честно, не помню считается ли это одной секцией...
              Это не имеет значения. Имеет значение, что x и y разделены спецификатором public
              Сообщение отредактировано: trainer -
                Цитата MyNameIsIgor @
                Цитата D_KEY @
                Нет. Просто не вижу, где бы тут было нарушение ODR с точки зрения формального определения.
                Хотя, скорее всего, ты прав, а мне должно быть стыдно

                Прекрати. Obj скомпилирован с одним ашником, а твой cpp - с другим (даже если ты "изменил" его с поммощью препроцессора). В результате у тебя линкуется два объектника, которые скомпилированы с двумя разными типами с однинаковым названием. Это не нарушение ODR?

                На уровне здравого смысла нарушает. А вот формально. Скорее всего тоже.
                В любом случае, это не приемлемый способ.

                Цитата
                Цитата D_KEY @
                Секция по прежнему одна, значит порядок по прежнему гарантируется.

                Порядок секций не гарантируется! Только порядок полей внутри секций

                Я знаю.

                Цитата
                Если ты меняешь private на public, то компилятор вправе переставить секции местами, если ему так удобнее.
                Так пусть он переставляет местами секции. Все поля находятся в одной.
                  Цитата trainer @
                  нет.

                  Ну, вот и чудненько, у нас тут тогда зависит от того, как компилятор расположит поля не только в первом случае, но и во втором тоже...
                    Цитата trainer @
                    Цитата D_KEY @
                    Да хоть десять, если все поля расположены в одной секции - порядок расположения гарантирован.
                    Внутри одной - да. Раскиданные по десяти - нет.
                    Цитата
                    The order of allocation of nonstatic data members separated by an access-specifier is unspecified.

                    Я знаю и с этим не спорю. Но у нас одна секция с полями.
                      Цитата D_KEY @
                      Так пусть он переставляет местами секции. Все поля находятся в одной.

                      Поменяется их смещение относительно "начала" экземпляра. Неужели это не понятно?
                        Цитата MyNameIsIgor @
                        Цитата D_KEY @
                        Да хоть десять, если все поля расположены в одной секции - порядок расположения гарантирован.

                        Гррррр!
                        ExpandedWrap disabled
                          class A
                          {
                            int x;
                          public:
                            int y;
                          };

                        В памяти сначала может идти x, а может и наоборот.
                        ExpandedWrap disabled
                          class A
                          {
                          public:
                            int x;
                          public:
                            int y;
                          };

                        Если честно, не помню считается ли это одной секцией... Но это не важно! Если одна, то в памяти будет x, y, что может не совпадать с вариантом y, x первого кода. Если это две секции, то опять у нас два варианта. Так понятно?

                        Я с этим случаем не спорил :)
                          Цитата D_KEY @
                          Но у нас одна секция с полями.
                          Если между полями есть спецификатор public - порядок их следования не определен. Ты гарантируешь, что между полями произвольного класса не будет никаких спецификаторов?
                          Сообщение отредактировано: trainer -
                            Цитата D_KEY @
                            Я знаю и с этим не спорю. Но у нас одна секция с полями.

                            Ах, так у тебя ещё и секция с полями одна :lol: Слушай, не многовато ли оговорок? Одни если, если, если... А если завтра инопланетяне нападут?
                              Цитата MyNameIsIgor @
                              Цитата D_KEY @
                              Так пусть он переставляет местами секции. Все поля находятся в одной.

                              Поменяется их смещение относительно "начала" экземпляра. Неужели это не понятно?

                              Почему? На выравнивание спецификаторы не влияют, и если секция с полями одна, то все будет ок.
                              Впрочем, мы обсуждаем какие-то малоинтересные вещи.

                              Добавлено
                              Цитата trainer @
                              Цитата D_KEY @
                              Но у нас одна секция с полями.
                              Если между полями есть спецификатор public - порядок их следования не определен. Ты гарантируешь, что между полями произвольного класса не будет никаких спецификаторов?

                              Нет конечно.
                                Цитата D_KEY @
                                Почему? На выравнивание спецификаторы не влияют, и если секция с полями одна, то все будет ок.
                                Впрочем, мы обсуждаем какие-то малоинтересные вещи.

                                Ну, так тебе спасибо ;) Я говорил про легальные способы изменения приватных полей, а ты приводишь грязные хаки, а потом заявляешь, что это не интересно... Ну, тебе виднее...
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 201 202 [203] 204 205 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.3198 ]   [ 15 queries used ]   [ Generated: 1.08.26, 07:44 GMT ]