In C++, the methods of a class are not stored inside the instances of that class. They're simply some "special" functions that transparently accept the this pointer in addition to the arguments specified by the programmer.
In your case, the sayHi() method does not reference any of the class fields, therefore, the this pointer (which is NULL) is never followed.
Make no mistake, though, this is still undefined behavior. Your program may choose to send nasty emails to your contact list when you invoke this. In this particular instance, it does the worst thing, and appears to work.
The virtual method case has been added since I answered the question, but I won't refine my answer, since it's included by others' answers.