我从维基百科上读到:
"引用不能为null,而指针可以; 每个引用都指某个对象,尽管它可能有效也可能无效."
但我不相信因为下面的代码看看它编译器没有给出错误:
class person
{
public:
virtual void setage()=0;
};
int main()
{
person *object=NULL;
person &object1=*object;
}
Run Code Online (Sandbox Code Playgroud)
请详细说明这一点.
小智 20
在你的代码中:
person *object=NULL;
person &object1=*object;
Run Code Online (Sandbox Code Playgroud)
你取消引用一个NULL指针,所以你得到未定义的行为.并回答你的问题,没有NULL引用这样的东西.
并且为了解决问题的其他部分,仅仅因为程序编译,不能保证它是正确的或它将起作用.C++编译器甚至不需要尝试诊断代码包含的错误类型.
Tom*_*ana 10
说话person &object1=*object与说法不是一回事person &object1=NULL.可能编译器不够聪明,无法发现您正在解除引用空指针,但无论如何您都会遇到运行时错误.所以它们仍然是真实的;)
你可以有一个空引用,不知道为什么有人会说,否则,这是某些操作的令人讨厌的副作用。您只是无法直接创建一个。