无论提供对指针的引用的便利性,例如无针解引用和特定于使用 each 的规则,
提供两种语言结构作为指针和引用是否有任何合乎逻辑的理由,或者它只是一种语法糖?
(我猜编译器最终的底层实现将使用与指针相同的步骤进行引用,并暗示/检查为语言引用定义的规则。)
注意:问题不在于语言在引用上定义的规则,例如“引用不允许在 C++ 中分配 NULL 但指针”等。
你问两个问题,如果我理解正确的话
开始:
foo(reintepret_cast<int *>(0xDEADBEEF) );
。相比之下,引用可确保基础数据有效 - 因为引用是对象本身的别名,并且不能被移动(假设引用的对象仍在范围内 -根据下面的注释进行编辑)。NULL
)上浪费周期。第二个原因是可以确定数据不仅指向有效位置,而且还指向有效数据对象。但主要原因是引用允许我们享受调用函数的好处,而无需通过值传递参数,但仍然保证参数引用有效值。你应该问 Bjarne Stroustrup 为什么 C++ 有引用。在其他地方,他在第 189 页的第 7.7 节参考资料,C++ 编程语言,第四版中提供了他的基本原理。另请参阅第 18 页。86 C++ 的设计和演变。