1

Тема: Оператори доступу до елементу структури і силки на член структури

Поясніть будь ласка, а то я читав але майже нічо не зрозумів.
+ не зрозумів, що саме роблять ці оператори "." і "->"
і де взагалі використовуються.

P.S.Але якщо можна "поясніть на пальцях" і то тільки пальцях одної руки.

2

Re: Оператори доступу до елементу структури і силки на член структури

операція "." застосовується в структурах і класах наприклад

struct mystruct
{
int x;
int y;
}obj;

щоб звернуться до х чи у потрібно використати "."

obj.x=2; obj.y=3;

3

Re: Оператори доступу до елементу структури і силки на член структури

Я вам раджу прочитати книгу Я.М.Глинський с++ & builder коротко і ясно все це описано

Подякували: Joker1

4 Востаннє редагувалося mike (25.08.2014 12:45:35)

Re: Оператори доступу до елементу структури і силки на член структури

Крапка використовується коли об'єкт не ініціалізований через оператор new.
Стрілка вправо якраз і використовується коли обєктр проініціалізований через new

CString * pStr = new CString("text");
pStr->length();


CString str = CString("text");
str.length();

Тобто, із вище наведених прикладів

pStr->length()  // робота по вказівнику
str.length()      // робота по посиланню
Подякували: Joker1

5

Re: Оператори доступу до елементу структури і силки на член структури

Ну як мене вчили в університеті, стрілка

a->b

це скорочення від

(*a).b

Розіменування (*, отримання об’єкта за вказівником) має вищий пріоритет ніж доступ до атрибуту (.), тому потрібні дужки. Їх писати не зручно, тому придумали стрілку, яка ці дві операції в правильному порядку виконує.

Подякували: 0xDADA11C7, mike, koala, Joker4

6

Re: Оператори доступу до елементу структури і силки на член структури

Дякую, здається зрозумів

7

Re: Оператори доступу до елементу структури і силки на член структури

muhasjo написав:

Крапка використовується коли об'єкт не ініціалізований через оператор new.
Стрілка вправо якраз і використовується коли обєктр проініціалізований через new

CString * pStr = new CString("text");
pStr->length();


CString str = CString("text");
str.length();

Тобто, із вище наведених прикладів

pStr->length()  // робота по вказівнику
str.length()      // робота по посиланню

Вибачте, але я вважаю що ініалізація тут ні до чого. Операція "->" використовуються з вказівниками, а оскільки new повертає вказівник, то ваш приклад з new вже є наслідоком, а не причиною використання "->".

Різниця між "." та "->" в тому що перше використовується для доступу членів в об’єктах, а друге - у вказівниках на об’єкти. Також не забувайте що операцію "->" можна перевизначити.

Подякували: koala1