how*_*rks 12 c++ pointers reference
我只是想知道,如何在内部存储引用?我觉得深层次的理解会让我更好地理解概念指针与参考,并做出决策选择.
我怀疑它基本上与指针一样,但编译器负责处理指针.请指教.
Ker*_* SB 15
不要求以任何方式"存储"引用.就语言而言,引用只是某个现有对象的别名,而这正是任何编译器必须提供的.
如果引用只是已经在范围内的其他对象的简写,或者带有引用参数的函数被内联,则完全有可能根本不需要存储任何内容.
在需要显示引用的情况下(例如,在不同的转换单元中调用函数时),您实际上可以实现a T & x作为a T * const并将每次出现x视为隐式解除引用该指针.即使在一个较高的水平,你能想到的T & x = y;和T * const p = &y;(以及相应的x和*p)本质上是相等的,所以这将是实现引用一个明显的方式.
但是当然没有要求,任何实现都可以随意做任何事情.
Alo*_*ave 11
引用只是内部的别名,编译器将它们视为指针.
但是从使用角度来看,用户存在一些细微差别.
一些主要的区别是:
NULL在引用时无效NULL.没有任何称为引用.const参考临时结合的寿命延伸到它.没有与指针等效的东西.另外,引用与const指针有一些共同点(不是指向const的指针):
当你知道你有一些东西(一个对象)要引用,你永远不想引用任何其他东西时使用引用,否则使用指针.