Because you're using this outside the class context. It stems from how C++ implements member functions. Implicitly, all member functions contain a parameter, called this, which may be declared as ClassName * const this. When you invoke a member function from an object, the compiler will pass the address of the object you're calling the member function from to this of the member function you're calling. For example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
struct Sample
{
void function(); // Compiler will add "Sample * const this" as a parameter.
};
int main()
{
Sample sample;
sample.function();
// Here, the compiler will take the address of "sample" and give
// it to the "this" parameter of "function()". "function()" will take
// the address, and refer to "sample" with it.
}