【发布时间】:2017-05-17 14:29:40
【问题描述】:
我刚开始从基础开始学习 Cpp,当我遇到引用变量时感到很困惑。
据我所知,引用变量就像一个别名(同一内存的另一个名称),所以在这种情况下它需要任何内存。
当我运行以下代码时:
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)。但如果我评论line 4,对象大小只是2。 这是怎么回事???
我有兴趣从基础开始学习,所以如果我在任何地方有错误,请纠正我
【问题讨论】:
-
int& refnum = i;中的i是否意味着num? -
sry...这是一个拼写错误...已编辑...
标签: c++