Well there are some instances where this-> is required (although they are rare). This usually comes into play when you have to differentiate between symbols that have the same name.
Code:
class Test
{
void foo() {}
void bar(int foo) { this->foo(); } // Without this-> you will get a compile error
};