【发布时间】:2019-06-17 17:04:44
【问题描述】:
我从维基百科读到:
“引用不能为空,而指针可以;每个引用都指向某个对象,尽管它可能有效也可能无效。”
但我不相信,因为下面的代码,看一下,编译器没有报错:
class person
{
public:
virtual void setage()=0;
};
int main()
{
person *object=NULL;
person &object1=*object;
}
请详细说明这一点。
【问题讨论】:
-
文章可能应该说:“格式良好的程序中的每个引用都指向一个对象。”取消引用空指针当然是错误的。
-
不要忘记我们最喜欢的关于空引用的故事:gotw.ca/conv/002.htm
-
@GMan:这听起来更好。而且,我在链接的 GOTW 上大笑。 “我不能教他;他被未定义的行为所吸引:”可悲的是,我认识这样的人。
-
当然,程序是格式错误的。主要是因为缺少
int。 -
不再...另一个空引用讨论...该标准明确指出 (8.3.2/4) '空引用不能存在于定义良好的程序中'