Your code is correct, but your comment shouldn't I just use "return this" is wrong (or, more accurately, the answer is "no, you shouldn't, and if you try, any compiler that works even halfway correctly compiler will stop you and give an error message.")
Given a class like:
class T {
void X() {}
void Y() const {}
};
In T::X, this will have the type T *const, and in T::Y, this will have the type T const *const. Either way, it's a pointer to T, not a reference to T. To get a reference to T (for returning or any other purpose) you need to use *this.