Как C ++ хранит функции и объекты в памяти? [Дубликат]
На этот вопрос уже есть ответ:
Что произойдет, когда я вызову функцию-член по нулевому указателю на объект? 6 ответовПусть у нас есть класс
class A
{
int x;
public:
void sayHi()
{
cout<<"Hi";
}
};
int main()
{
A *a=NULL;
a->sayHi();
}
Приведенный выше код скомпилируется на Turbo C (где я тестировал) и напечатаетHi
как вывод.
Я ожидал аварии, потому чтоa
являетсяNULL
. Более того, если я сделаюsayHi()
функция виртуальная, говорит
Abnormal temination(Segmentation fault in gcc)
Я знаю, что многое зависит от реализации, но если бы кто-нибудь мог пролить свет на любую реализацию или просто дать обзор, это было бы очень приятно.