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

Kar*_*her 3 c++ pointers reference c++11

int num = 0;
int *ptrNum = #
int &refNum = num;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

eer*_*ika 7

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

它既可以是,也可以不是.

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

请提供正确的陈述

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

未指定引用是否需要存储

如何存储它根本没有指定.

解释为什么引用不是对象.

同一文档将对象定义为

[intro.object]/1

......一个物体是一个存储区域......

如果未将引用定义为具有存储,则不将其定义为对象.