我刚开始从基础学习C++,当我遇到引用变量时感到困惑。
据我所学,引用变量就像是别名(指向同一内存的另一个名称),所以在这种情况下,它不需要任何内存。
当我运行以下代码时:
class sample_class
{
public:
int num; //line1
int& refnum = num; //line2
}
int main()
{
sample_class sample_object;
cout<< "sample_class object size : " << sizeof(sample_object) <<endl;
return 0;
}
我得到的输出为:
==>在这里,sample_class对象大小:8
num
的大小为4个字节(32位编译器),而refnum
由于引用只是num
的别名。那么为什么在这种情况下,对象的大小是8
?==>此外,如果真的
refnum
像一个别名一样,那么这个信息(即refnum
还保存/别名到num
的同一内存地址的信息)何时被存储?
编辑:
考虑以下情况(更改sample_class
的定义):class sample_class
{
public:
char letter; //line3
char& refletter = letter; //line4
char letter_two; //line5
}
这里,如果我打印
sample_class
对象的大小,我得到的是12
(尽管letter
,refletter
和letter_two
的大小都等于1
)。但是如果我注释掉第4行
,对象大小只有2
。这是怎么回事???
我想从基础知识开始学习,所以如果我哪里错了,请纠正我
int& refnum = i;
中的i
是否应该改为num
? - wkl