gpt4 book ai didi

c++ - 为什么允许引用指针的间接寻址?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:10:54 27 4
gpt4 key购买 nike

int *ptr = 0;
int &ref = *ptr;

我在 Visual Studio 中编写了上面的代码并且它有效?这里我指的是NULL。为什么允许?指针可以取任何地址、NULL 甚至无效地址。仍然允许引用指针的间接寻址?

那为什么说“Reference cannot be null”。这里,引用不是指向 NULL 吗?

最佳答案

这是不允许的。

用标准的话来说:

C++11 8.3.2/5: A reference shall be initialized to refer to a valid object or function.

但是,这不是编译器通常可以诊断的东西,因为指针的有效性是运行时的事情。因此不需要诊断错误,并且可能没有编译器警告,只有未定义的行为。

标准中特别提到了这种情况:

Note: in particular, a null reference cannot exist in a well-defined program, because the only way to create such a reference would be to bind it to the “object” obtained by dereferencing a null pointer, which causes undefined behavior.

关于c++ - 为什么允许引用指针的间接寻址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27802605/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com