引用变量如何在内存中表示?

时间:2016-01-04 10:21:31

标签: c++ pointers c++11 reference

int num = 0;
int *ptrNum = #
int &refNum = num;

enter image description here

哪一个是存储器表1或表2中参考变量的正确表示? 如果表2,那么为什么指针是一个对象和一个引用是不是? 如果两个表示都不正确,请提供正确的表示和解释为什么参考不是对象。

1 个答案:

答案 0 :(得分:7)

  

哪一个是内存表1或表2中引用变量的正确表示?

可能是,也可能都不是。

在这种情况下,不需要存储对象的地址,因此表1就足够了。在另一个示例中,可能需要引用变量的地址。例如,当引用是非内联函数的参数时。

  

请提供正确的陈述

C ++标准的N4140草案[dcl.ref] / 4:

  

未指明引用是否需要存储

根本没有指定的存储方式。

  

解释为什么参考不是一个对象。

同一文档将对象定义为

[intro.object] / 1

  

......对象是存储区域......

如果未将参考定义为存储,则未将其定义为对象。