从我到目前为止所读到的,似乎引用变量根本不应该占用任何内存。相反,它们被视为它们引用的完全相同的变量,但名称不同。
但是,当我运行以下代码时,似乎并非总是如此:
#include <cstdio>
struct A
{
int m[3];
};
struct B: A
{
B():x(m[0]), y(m[1]), z(m[2]){}
int& x;
int& y;
int& z;
};
int main(){
printf("%u, %u\n", sizeof(A), sizeof(B));
return 0;
}
输出:
12, 40
为什么B比A大那么多?
有没有其他方法可以访问,例如使用 Bx 访问 Bm[0]?