无论提供了对指针的引用的便利性,例如无针解引用和特定于每个使用的规则,提供两种语言结构作为指针和引用是否有任何合乎逻辑的理由,或者它只是一种语法糖?(我猜最终的底层实现是编译器将对引用使用与暗示/检查由语言为引用定义的规则的指针相同的步骤。)注意:问题不在于语言对引用定义的规则,例如“引用不允许在 C++ 中分配 NULL 但在指针中”等。
2 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
你问两个问题,如果我理解正确的话
指针和引用有什么区别
为什么支持这两种数据类型
开始:
指针指的是内存中数据类型所在的位置。给定底层硬件,指针的大小是固定的,通常为 4 或 8 个字节 - 完全不管它实际上指向什么。此外,可以使用无效值将指针传递给函数 -
foo(reintepret_cast<int *>(0xDEADBEEF) );
。相比之下,引用确保基础数据是有效的——因为引用是对象本身的别名,并且不能移动(前提是被引用的对象仍在范围内——根据下面的评论进行编辑)。有是有理由支持这两种类型。第一个原因是确保传递给函数的数据是有效的 - 不会在测试指针有效性(而不是
NULL
)上浪费周期。第二个原因是可以确定数据不仅指向有效位置,而且还指向有效数据对象。但主要原因是引用允许我们享受调用函数而不按值传递参数的好处,但仍然保证参数引用有效值。
哔哔one
TA贡献1854条经验 获得超8个赞
你应该问 Bjarne Stroustrup 为什么 C++ 有引用。在其他地方,他在第 7.7 节参考资料,C++ 编程语言,第四版第 189 页中提供了他的基本原理。《C++ 的设计与演化》第 86 卷。
- 2 回答
- 0 关注
- 274 浏览
添加回答
举报
0/150
提交
取消