引用成员变量大小问题

oN5GrzoN 2013-01-29 02:15:12
	class A
{
public:
char i;
char& b;
A():b(i)
{
i=99;
}
};

这样写,b就是i的引用。如果两个变量都是int,则
sizeof(A)的值是8,还可以理解。但为什么两个都是char的时候,sizeof(A)还是8呢?
相对的,试过了
struct B
{
char i;
};
没问题
...全文
108 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ylgm44 2013-01-29
引用 4 楼 zhangwuji156 的回复:
引用 3 楼 oN5GrzoN 的回复:引用 2 楼 ylgm44 的回复:应用的本质,就是指针。 char& b;占用的内存大小,和char* b一样。对于b来说,就是一个指针,指针大小就是int大小,所以sizeof(A)为8 char i; char& b; 可以看成 char i; ……
不对,引用类型按照int类型处理了,所以b占用4个字节,然后是结构体对齐,由于b大小是4,i大小是1,结构体对齐按照4字节对齐,所以A大小是两个int大小,即8..
  • 打赏
  • 举报
回复
zhangwuji156 2013-01-29
引用 3 楼 oN5GrzoN 的回复:
引用 2 楼 ylgm44 的回复:应用的本质,就是指针。 char& b;占用的内存大小,和char* b一样。对于b来说,就是一个指针,指针大小就是int大小,所以sizeof(A)为8 char i; char& b; 可以看成 char i; char* b; 那加起来也是5啊 ……
编译器优化,char按4算
  • 打赏
  • 举报
回复
oN5GrzoN 2013-01-29
引用 2 楼 ylgm44 的回复:
应用的本质,就是指针。 char& b;占用的内存大小,和char* b一样。对于b来说,就是一个指针,指针大小就是int大小,所以sizeof(A)为8
char i; char& b; 可以看成 char i; char* b; 那加起来也是5啊
  • 打赏
  • 举报
回复
ylgm44 2013-01-29
应用的本质,就是指针。 char& b;占用的内存大小,和char* b一样。对于b来说,就是一个指针,指针大小就是int大小,所以sizeof(A)为8
  • 打赏
  • 举报
回复
zhangwuji156 2013-01-29
引用总是占4字节
  • 打赏
  • 举报
回复
相关推荐
发帖
C++ 语言
加入

6.1w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
申请成为版主
帖子事件
创建了帖子
2013-01-29 02:15
社区公告
暂无公告