私がこれまでに読んだことから、参照変数はまったくメモリを必要としないようです。代わりに、参照しているのとまったく同じ変数として扱われますが、別の名前が付けられています。
ただし、次のコードを実行すると、常にそうであるとは限りません。
#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] にアクセスできる他の方法はありますか?