В вакууме, это просто потому, что ваша функция:
public:
void show()
{
cout<<"Showing \n";
}
на самом деле не пытается что-то делать с объектом - чтобы понять, почему это работает, просто подумайте о членефункционирует как абстракция над свободной функцией , принимающей объект в качестве первого аргумента:
void show(Object* this)
{
cout<<"Showing \n";
}
Теперь легко понять, почему это работает, поскольку вы не используете this
-нулевой указатель.
Если вы измените что-то аля. это:
public:
void show()
{
cout<< this->temp << "Showing \n";
}
Ваша программа почти наверняка завершится сбоем.