c++中一个类为什么占一个字节???

bitxinhai 2008-09-12 11:40:40
例如下面的程序:
class A
{
};

void main()
{
cout<<sizeof(A)<<endl;
A a;
cout<<sizeof(a)<<endl;
}
输出的结果都是1;
请问为什么??
谢谢!!!想不太明白!!
...全文
317 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
iambic 2008-09-13
  • 打赏
  • 举报
回复
>C++中规定无数据成员的结构有最小的非零长度,为了防止与他相邻的数据对象有相同的地址。
请问什么叫最小的非零长度?
danny1221 2008-09-13
  • 打赏
  • 举报
回复
google it, please!
Keywords: empty class size
星羽 2008-09-13
  • 打赏
  • 举报
回复

struct test {
char a[0];
};

int main() {

printf("%d\n", sizeof(struct test));

return 0;
}

vs2005 用c编译结果是4,用c++编译结果是1
cattycat 2008-09-13
  • 打赏
  • 举报
回复
C++中规定无数据成员的结构有最小的非零长度,为了防止与他相邻的数据对象有相同的地址。
iwong 2008-09-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bitxinhai 的回复:]
觉得应该为4个,
至少应该有一个指针的空间!!
[/Quote]哪儿来的指针?
mabo321 2008-09-13
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 fengyizi 的回复:]
引用 15 楼 iceheart 的回复:
考虑如下情况:
A array_A[100];
A *p1 = &array_A[0];
A *p2 = &array_A[99];
p1 应该等于 p2么? 如果array_A[0]的大小是0会发生什么情况?

p1 != p2
是0也得分配,不然数组就无法组成了。
[/Quote]

p1 = p2 sizeof(array[0])= 1
xuxingok 2008-09-13
  • 打赏
  • 举报
回复
mark
fengyizi 2008-09-13
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 iceheart 的回复:]
考虑如下情况:
A array_A[100];
A *p1 = &array_A[0];
A *p2 = &array_A[99];
p1 应该等于 p2么? 如果array_A[0]的大小是0会发生什么情况?
[/Quote]
p1 != p2
是0也得分配,不然数组就无法组成了。
iceheart 2008-09-13
  • 打赏
  • 举报
回复
考虑如下情况:
A array_A[100];
A *p1 = &array_A[0];
A *p2 = &array_A[99];
p1 应该等于 p2么? 如果array_A[0]的大小是0会发生什么情况?
hyyuanqiang 2008-09-13
  • 打赏
  • 举报
回复
学习了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
richbirdandy 2008-09-13
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 richbirdandy 的回复:]
引用 12 楼 budTang 的回复:
空类实例化后,为了让他在内存中可寻址,就分配一字节内存给他

不错
另继承这个类后 这个类大小就优化为0了
所谓的 空白基类最优化
[/Quote]
另一个类
richbirdandy 2008-09-13
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 budTang 的回复:]
空类实例化后,为了让他在内存中可寻址,就分配一字节内存给他
[/Quote]
不错
另继承这个类后 这个类大小就优化为0了
所谓的 空白基类最优化
budweiser 2008-09-13
  • 打赏
  • 举报
回复
空类实例化后,为了让他在内存中可寻址,就分配一字节内存给他
bitxinhai 2008-09-12
  • 打赏
  • 举报
回复
觉得应该为4个,
至少应该有一个指针的空间!!
Zark 2008-09-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 AlwaysSLH 的回复:]
空类增加一个一字节的哑成员来占位
^_^
[/Quote]

正确.
踏岸寻柳 2008-09-12
  • 打赏
  • 举报
回复
lz觉得一个空类应该占多大空间呢?
kingstarer 2008-09-12
  • 打赏
  • 举报
回复
C语言规定,分配空间最少占一个字节
AlwaysSLH 2008-09-12
  • 打赏
  • 举报
回复
空类增加一个一字节的哑成员来占位
^_^

64,676

社区成员

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

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