引用成员变量大小问题

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;
};
没问题
...全文
176 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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字节

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧