Другие языки программирования и технологии

Что значит "->" в C++?

если есть класс Fun

=====================
class Fun
{
public:
Fun(int c): Counter(c){}
int Counter;
};
=====================

то можно написать так:

Fun fun(5);
int cnt = fun.Counter;

Но это если экземпляр класса инстанциируется автоматически. Здесь ты получаешь доступ к полю Counter через точку.

Если же инстанцируешь экземпляр класса динамически, т. е ты имеешь УКАЗАТЕЛЬ на переменную, то вместо точки для доступа к полям (и методам) нужно использовать ->

Fun* fun = new Fun(5);
int cnt = fun->Counter;

Иными словами, -> это то же самое, что *. то есть можно написать еще и так

int cnt = (*fun).Counter;

здесь (*fun) из указателя делает объект, и дальше к его свойствам можно обращаться уже через точку.
Женя Ликинов
Женя Ликинов
21 154
Лучший ответ
Разыменование указателя. Вместо того, чтобы писать нечто вроде (TypeCast)(*Pointer).Method (не поручусь за точный синтаксис), позволяет писать просто Pointer->Method, что несколько удобнее.
Bake Ab
Bake Ab
74 648
Если доступ к членам объекта осуществляется непосредственно, то используется точка (прямой доступ).
Если доступ к членам объекта осуществляется через указатель на объект, то используется стрелочка (косвенный доступ).
Endo Heer
Endo Heer
84 540
Это *(ptr).member,оператор стрелка,
если используешь объект класса, или ссылку на объект, то синтаксис такой object.member object.member(),а если указатель на объект класс то opjectPtr->member objectPtr->member(),что эквивалентно таму, как написать *objectPtr, получить значение самого объектa, на который указывает objectPtr, а потом применить оператор точку,
*(ptr).member ~ ptr->member
DS
Dorin Starciuc
2 544
Это выбор метода ->text, -> Ну скорее можно сказать выбор функции.
Это селектор членов класса
Это язык программирования.