Урок №90. Оператор доступа к членам через указатель

  Юрий  | 

  |

  Обновл. 13 Сен 2021  | 

 55994

 ǀ   7 

Обычно есть либо указатель, либо ссылка на структуру/класс. Как мы уже знаем из предыдущих уроков, доступ к члену структуры осуществляется через оператор выбора члена (.) (или «оператор доступа к члену»):

Этот синтаксис также работает и со ссылками:

Однако, в случае с указателем, вам нужно его сначала разыменовать:

Обратите внимание, разыменование указателя должно находиться в круглых скобках, поскольку оператор выбора члена имеет более высокий приоритет, чем оператор разыменования.

Поскольку синтаксис доступа к членам структур/классов с помощью указателя несколько неудобен, то C++ предоставляет второй оператор выбора членов (->) для осуществления доступа к членам через указатель. Следующие две строки идентичны:

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

Правило: При использовании указателя для доступа к значению члена структуры или класса используйте оператор «->» вместо оператора «.».

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (387 оценок, среднее: 4,92 из 5)
Загрузка...

Комментариев: 7

  1. Александр:

    тем, кто сомневается в удобстве синтаксиса -> можно предложить сравнить:

    с

    оставим за скобками идиотизм подобного вызова 🙂 Но в принципе то подобное возможно! Что читается проще и наглядней? :)))

    1. Алексей:

      Не видел структуры, но мне лично сложно такое читать.
      С -> идет все ступенчато.

    2. alex_1988:

      В Microsoft Visual Studio можно писать через точку, среда разработки сама исправит на нужный оператор.

      1. alex_1988:

        И добавлю что у тебя указан неверный пример. Для указателя оператор разыменования или выбора члена нужно укзывать только один раз, остальной доступ осуществляется только через точку:

        1. boba:

          если каждый член указатель?

        2. Viktor:

          Ты не прав. Это зависит от того, является ли член указателем

        3. Константин:

          …и пусть не будет тебе каждый член указателем!:-)

Добавить комментарий

Ваш E-mail не будет опубликован. Обязательные поля помечены *