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

Что значит стрелка ->(состоящая из знаков минус и больше) в с++ ?

Олег Паньков
Олег Паньков
2 430
При помощи этой стрелки осуществляется доступ к методам (в C++ -функциям) класса. Например Form1 -> Close(). Здесь Form1 - переменная класса, а Close() - метод класса.
НЕ
Нурбол Есенов
1 791
Лучший ответ
Стрелка используется для доступа к полям через указатель на структуру или объект.
Иван Рудской
Иван Рудской
84 349
Способ доступа к методам и членам класса. Есть два способа доступа: точка и стрелка. Точка используется, когда члены класса и методы статические. А стрелка, вроде бы, когда осуществляется доступ через указатель. Точнее не знаю, видел где-то инфу.
Тимур Ахияров
Тимур Ахияров
45 384
Mr Lr Суслов, гонишь! Доступ к статическим переменным и функциям (а не к статическим членам и методам) через двоеточие.
Доступ к переменным членам и методам : через точку объект класса, через -> указатель на объект класса
class foo
{
public:
int m_val; // переменная-член
static int s_val; // статическая переменная класса, а не переменная-член

int func1(); // функция-член, или метод класса
static int func2(); // статическая функция, а не функция-член и не метод класса
};

статические
foo::s_val;
foo::func2();

// объект класса
foo obj;
obj.m_val;
obj.func1();

// указатель на объект класса
foo *pobj = &obj;
pobj->m_val;
pobj->func1();
Суслов, гонишь! Доступ к статическим переменным и функциям (а не к статическим членам и методам) через двоеточие.
Доступ к переменным членам и методам : через точку объект класса, через -> указатель на объект класса
class foo
{
public:
int m_val; // переменная-член
static int s_val; // статическая переменная класса, а не переменная-член

int func1(); // функция-член, или метод класса
static int func2(); // статическая функция, а не функция-член и не метод класса
};

статические
foo::s_val;
foo::func2();

// объект класса
foo obj;
obj.m_val;
obj.func1();

// указатель на объект класса
foo *pobj = &obj;
pobj->m_val;
pobj->func1();
это оператор косвенного обращения.
для указателей a->b - это (*a).b, просто сокращённая форма два-в-одном.

struct Point
{
int X, Y;
}

Point * point = new Point;
point->X = 1;
point->Y = 2;
(*point).X = 3;

но если копнуть глубже, то оператор косвенного обращения не синонимичен разыменованию указателя с последующим доступом к члену объекта, расположенного по этому указателю, потому что оператор -> можно перегружать (можно заставить его и жёсткий диск отформатировать) , в отличие от оператора "точка" - этот не перегружается.
VR
Vladimir Rotari
9 617
Олег Паньков Спасибо. А что значит перегружать?