为什么在nullptr上调用函数有效?

时间:2019-04-18 20:17:28

标签: c++ pointers

请问我以前是否曾问过这个问题,但是,我有一个已声明并初始化为nullptr的指针,当我在其上调用一个函数时,它可以正常工作,并且该函数按预期工作,但我不是真的了解它为什么有效。我的理解是,必须有一个对象的实例才能在其上调用函数,但是此指针已初始化为nullptr,因此不应有该对象的实例,对吗?

当时,当我编写这段代码时,我什至没有意识到我会在nullptr上调用此函数,当我向我的讲师展示它时,他说它不起作用,因为没有实例可以调用该函数。功能。

//an example from my cpp file
int main()
{
   Organism* ptr = nullptr; //pointer of type organism
   cout << ptr->checkCell();
   return 0;
}

//from the Organism class header file 
bool checkCell()
{
   return (this == nullptr);
}

我创建了一个单独的cpp文件以对其进行测试,并且仍然以相同的方式工作。 我只是想知道发生了什么事,内部缺少更好的单词,为什么会起作用。

0 个答案:

没有答案