C ++参考是否保证使用指针"内部"?

时间:2016-02-23 09:53:19

标签: c++ c++14

查看C ++中的引用,我注意到我看到的所有实现都在内部使用了指针。

C ++标准是否保证引用将在内部使用指针,或者实现是否可以使用更高效的"解? (我现在不会看到它是如何完成的"更好"因为当创建一个新的堆栈帧时,那里并不是一种防弹方式,可以很容易地知道堆栈基指针偏移量的变量被引用的是因为堆栈非常动态)

注意:我确实理解C ++中指针和引用之间的区别(这个问题与此无关)

3 个答案:

答案 0 :(得分:10)

如果您的意思是引用要求编译器为指针分配存储空间,那么这是未指定的。

  

§8.3.2/ 4

     

未指明引用是否需要存储。

编辑:将Martin Bonner的评论记录为有用的实用说明,

  

[F]或调试目的,知道“幕后”发生了什么是非常有用的。 (例如,回答诸如“为什么不完全脱离轨道?”)之类的问题。在实践中,编译器都将引用实现为指针(除非它们可以完全取消引用)。

答案 1 :(得分:4)

不,它不会对如何实现引用做出任何保证。 C ++语言只定义引用的语义,而不是它们的实现。

答案 2 :(得分:4)

标准没有说明如何实施参考,只是如何实施。

它也没有说明堆栈帧,这是另一个实现细节。