->
используется при доступе к данным, на которые у вас есть указатель.
Например, вы можете создать указатель ptr на переменную типа int intVar следующим образом:
int* prt = &intVar;
Затем вы можете использовать функцию, такую как foo, только для разыменования этого указателя - для вызова функции в переменной, на которую указывает указатель, а не в числовом значении ячейки памяти этой переменной:
(*ptr).foo();
Без скобок здесь компилятор будет понимать это как *(ptr.foo())
из-за приоритета оператора, а это не то, что нам нужно.
На самом деле это то же самое, что набирать
ptr->foo();
Поскольку ->
разыменовывает этот указатель, он вызывает функцию foo()
для переменной, на которую указывает указатель.
Аналогичным образом, мы можем использовать ->
для доступа или установки члена класса:
myClass* ptr = &myClassMember;
ptr->myClassVar = 2;