Что значит *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 разыменовывать. Так как это указатель.

→ Ссылка