Inside a member function, the this pointer holds the address of the current object. When you call obj.doSomething(), the function receives a hidden pointer to obj that you can access as this.
You'll use this explicitly when parameter names match member names: this->name = name; distinguishes the member from the parameter. Without this, the compiler sees the parameter only.
The this pointer is also useful for returning the current object from a function. Returning *this enables method chaining where you write obj.setX(5).setY(10) in a single statement.