他们所说的引用与原始变量具有相同的地址,那么为什么它们会消耗内存。 参考这篇文章 Reference in place of getters? 在这个例子中,如果我作为类成员引用类的大小增加。
编辑1
感谢大家的答案。
以下是我在VS 2010 Express上获得的输出
该计划:
class X
{
int i;
int &I;
public:
X():I(i){}
}x;
class Y
{
int i;
public:
Y(){}
}y;
int main()
{
int j =0;
int &J = j;
return 0;
}
观看窗口:
拆卸:
int main()
{
01101390 push ebp
01101391 mov ebp,esp
01101393 sub esp,0D8h
01101399 push ebx
0110139A push esi
0110139B push edi
0110139C lea edi,[ebp-0D8h]
011013A2 mov ecx,36h
011013A7 mov eax,0CCCCCCCCh
011013AC rep stos dword ptr es:[edi]
int j =0;
011013AE mov dword ptr [j],0
int &J = j;
011013B5 lea eax,[j]
011013B8 mov dword ptr [J],eax
return 0;
011013BB xor eax,eax
}
看起来这至少与VS中的指针一样实现。
答案 0 :(得分:3)
引用通常使用指针实现。但请注意,该标准明确指出(C ++ 11 8.3.2 / 4 - “参考文献”):
未指明引用是否需要存储(3.7)。
答案 1 :(得分:2)
存储引用本身需要空间。实际上与指针大小相同。