似乎引用只是一个别名,但是,在向一个结构体(例如)添加引用字段时,即使该引用在声明时作为另一个同一结构体字段的别名进行初始化,结构体的大小也会增加。
例如:
上面的程序输出:
例如:
#include <iostream>
using namespace std;
int
main(int, char **)
{
struct {
int integers[2];
} first;
struct {
int integers[2];
int &one = integers[0];
int &two = integers[1];
} second;
cout << sizeof first << " " << sizeof first.integers << " " <<
sizeof second << " " << endl;
return 0;
};
上面的程序输出:
8 8 24
。前两个数我懂,第三个数我不懂。为什么添加这样的引用很重要 -- 存储在那个内存中的东西,在编译时无法解决吗?与指针不同,一旦声明,按设计,引用不能改变,它们可以吗?那么它们为什么会被存储?
x.r
并不指向x.a
,而是指向main
函数内的局部变量a
。因此,x
内的a
和r
并不是同一个东西。我可能应该为那个局部变量使用不同的名称:https://godbolt.org/z/1n3jaE。 - Daniel Langr