Зазвичай є або вказівник, або посилання на структуру/клас. Як ми вже знаємо з попередніх уроків, доступ до члена структури здійснюється через оператор вибору члена (.) (або «оператор доступу до члена»):
|
1 2 3 4 5 6 7 8 9 |
struct Man { int weight; double height; }; Man man; // Доступ до члена здійснюється через використання фактичної змінної структури Man man.weight = 60; |
Даний синтаксис також працює і з посиланнями:
|
1 2 3 4 5 6 7 8 9 10 |
struct Man { int weight; double height; }; Man man; // визначаємо змінну структури Man // Доступ до члена здійснюється через посилання на змінну структури Man Man &ref = man; ref.weight = 60; |
Однак, у випадку з вказівником, вам спочатку потрібно його розіменувати:
|
1 2 3 4 5 6 7 8 9 10 |
struct Man { int weight; double height; }; Man man; // Доступ до члена здійснюється через вказівник на змінну структури Man Man *ptr = &man; (*ptr).weight = 60; |
Зверніть увагу, розіменування вказівника повинно знаходитися в круглих дужках, оскільки оператор вибору члена має більший пріоритет, ніж оператор розіменування.
Оскільки синтаксис доступу до членів структур/класів за допомогою вказівника не дуже зручний, то мова C++ надає другий оператор вибору членів (->) для здійснення доступу до членів через вказівник. Наступні два рядки ідентичні:
|
1 2 |
(*ptr).weight = 60; ptr->weight = 60; |
Це не тільки легше написати, але і цей спосіб так само менш вразливий до створення помилок, оскільки тут розіменування виконується неявно, тому немає проблем з пріоритетом, про який потрібно пам’ятати. Отже, при доступі до членів структур/класів через вказівник, завжди використовуйте оператор -> замість оператора ..
Правило: При використанні вказівника для доступу до значення члена структури/класу використовуйте оператор «->» замість оператора «.».

Особливо розумієш зручність коли створюєш об’єкт в купі і зразу отримуєш вказівник на об’єкт.