Что значит *this в c++?
class Point
{
public:
Point(int x, int y)
{
this->x = x;
this->y = y;
}
void showCoords()
{
std::cout << "Coords x: " << x << "\t y: " << y << std::endl;
}
Point &move(int x, int y)
{
this->x += x;
this->y += y;
return *this;
}
private:
int x;
int y;
};
Я только начал изучать программирование. Мне не совсем понятно, зачем метод move() возвращает *this, если this - это уже ссылка на текущий объект. Я бы возвращал просто this.
Ответы (2 шт):
Автор решения: gbg
→ Ссылка
this - не ссылка на текущий объект, а указатель. Поэтому, чтобы получился объект, указатель надо разыменовать - *this.
Автор решения: ТарасПрогер
→ Ссылка
Можно было возвращать просто this если метод move() возвращал указатель.
Point* move(int x, int y)
{
this->x += x;
this->y += y;
return this;
}
Но, это не очень удобно, так как, например-
Point obj;
obj.move(2,3)->showCoords();
нужно обращаться через стрелочку. А если метод возвращал ссылку можно было б просто через точку-
Point obj;
obj.move(2,3).showCoords();
Если тип возврата ссылка - нужно this разыменовывать. Так как это указатель.