Das ganze ist einfach ganz logisch zu erklären.
Nachdem dein Programm in Maschienencode umgewandelt (compiliert) wurde, gibt es keine klassen mehr.
aus
class Bla
{
public:
void ausgeben(void)
{
cout << text << "\n";
}
}
wird
void ausgeben(void* this)
{
cout << this->text << "\n";
}
und aus
blubb->ausgeben();
wird
ausgeben(blubb);
ist logisch das bei folgendem kein Fehler entsteht, egal was du übergibts, oder?
void ausgeben(void* this)
{
cout << "Hallo" << "\n";
}
Das ist kein Fehler, ds ist einfach so ;-)
Im Regelfall wird es aber selten vorkommen, dass deine Klasse über Methoden verfügt, die nicht auf den Klassenspeicher zugreifen.
HTH,
Uwe