We all know that "this" is always passed an address, and cannot be assigned to null. Based on the rules imposed on the declaration of the "this" parameter, "this" behaves almost like a reference - so why not implement it as a reference? Is there any particular reason why a pointer was chosen?
At the time of choosing, references didn't exist. C++ was still being carved out by Stroustrup, his strong Nordic hands tearing and reshaping the very fabric of the (programming) universe, bending it to his will. RRRAAGGHH!
It wouldn't have been backwards compatible with C. Classes are structures in memory that hold class methods. When you call a function that belongs to a class within the class, you are actually referencing the this pointer and then the class method:
this->function();
You have to; otherwise the compiler doesn't know where to look.