Method chaining method returns a reference to the owning object so that another method can be called.
It enables things like this:
Direction of chaining
Notice that some chaining methods evaluate from right to left (such as operator=), whereas other chaining methods evaluate from left to right (ex: operator>>).
Implementing Chaining
For classes to implement chaining, you should return *this.
the return type is a reference &, so it calls the function recursively