社区
C语言
帖子详情
sizeof(空类)=?
jhon_zhi
2012-03-26 07:42:40
当一个类A 中没有声命任何成员变量与成员函数这时sizeof(A)的值是多少,如果不是零,请解释一下
编译器为什么没有让它为零。
...全文
543
15
打赏
收藏
sizeof(空类)=?
当一个类A 中没有声命任何成员变量与成员函数这时sizeof(A)的值是多少,如果不是零,请解释一下 编译器为什么没有让它为零。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
HeFaQ123
2012-03-27
打赏
举报
回复
一般是1,反正就是比0大。空类肯定有空间。而这个空间又是什么都没有,但肯定比0大,一般都是1!
Lactoferrin
2012-03-27
打赏
举报
回复
反正不是0
gengpei1234
2012-03-27
打赏
举报
回复
同意6楼。
参见Inside The C++ Object Model。
讲如何设计C++的。成为C++解决疑难杂症的高手必看的书。
menzi11
2012-03-27
打赏
举报
回复
[Quote=引用 10 楼 jxnuzhouguohong 的回复:]
引用 2 楼 binghuazh 的回复:
编译器会给它一个字节,不然实例化的时候找不着地址
地址不是4个字节么?
[/Quote]
地址是4不妨碍sizeof是1啊,想想char
jxnuzhouguohong
2012-03-27
打赏
举报
回复
[Quote=引用 2 楼 binghuazh 的回复:]
编译器会给它一个字节,不然实例化的时候找不着地址
[/Quote]
地址不是4个字节么?
青霜无痕
2012-03-26
打赏
举报
回复
他要给这类一个位置空间 也就是他的地址
飞天御剑流
2012-03-26
打赏
举报
回复
[Quote=引用楼主 coolfeel123 的回复:]
当一个类A 中没有声命任何成员变量与成员函数这时sizeof(A)的值是多少,如果不是零,请解释一下
编译器为什么没有让它为零。
[/Quote]
这个问题不能简单地说空类大小是0还是不为0,要分情况。
当空类实例作为基类子对象时,大小允许为0(但不是一定为0);当空类实例作为最终派生对象时,大小至少为1(但不是一定为1,可以大于1,具体数值是实现定义的),目的是为了保持内存模型中的实体的地址唯一性。
详情请看:
http://blog.csdn.net/supermegaboy/article/details/6858177
vanxeger
2012-03-26
打赏
举报
回复
这个只是一个标志,当你生成实例的时候要用的,不然这个类怎么存在呢?!
没有昵称阿
2012-03-26
打赏
举报
回复
反正不是0,具体大小这也和编译器的实现有关系。
这是为了确保不同对象有不同的地址。
可以参考《Inside C++ Object Model》
xiarui
2012-03-26
打赏
举报
回复
可能还和编译器有关,vc2010里面是1
JackBurd
2012-03-26
打赏
举报
回复
刚才试了一下,确实是1.貌似1L 和 2L 有道理。
Kaile
2012-03-26
打赏
举报
回复
不是0,可能是4个字节,因为编译器会为空类生成默认构造函数,拷贝构造函数,析构函数等。
blingpro
2012-03-26
打赏
举报
回复
编译器会给它一个字节,不然实例化的时候找不着地址
pathuang68
2012-03-26
打赏
举报
回复
通常是1,用作占位的。
sizeof
() 类大小,
空类
大小
一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小. 首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的。 用
sizeof
运算符对一个类型名操作,得到的是具有该类型实体的大小。 如果 Class A; A obj; 那么
sizeof
(A)==
sizeof
(obj) 那么
sizeof
(A)的大小和成员的大小总和是什么关系呢,很简单,一个对象的大小大于等...
sizeof
空类
是多少?
对一个没有成员函数和成员变量的类
sizeof
是多少? 1. class foo {} //
sizeof
(foo)=1 理论上来说这个
sizeof
应该为0,但是如果需要实例化的,那必须要占用内存空间,如果不占用内存空间,那么怎么取地址呢?所以,这个大小由编译器决定,(编译器会向类中增加一个内容).经测试gcc和vs都是为1. 2. class foo { public: foo(
面试:
sizeof
关键字
sizeof
(
空类
型)=? answer:1 解释:对于
空类
型或者
空类
型的实例化,不包含任何信息,但是声明该类型的实例时,必须在内存中有空间,否则无法使用这些实例。占用多少由编译器决定,VS中占用1个字节 在
空类
型中添加一个构造函数和析构函数,
sizeof
()=? answer:1 解释:调用构造函数和析构函数只需要知道函数的地址即可,而这些函数的地址只与类型相关,而与类型的实力无关,编译器也不...
C++
空类
和空结构体为什么是
sizeof
是1
重点: 1.
空类
和空结构体的
sizeof
是1 2.
空类
和空结构体的
sizeof
大小可以由编译器自己控制,编译器往往会给一个
空类
隐含的加一个字节,这样
空类
在实例化后在内存得到了独一无二的地址。 3.实例化的意思就是创建一个对象。比如class A。声明一个A a;其中a就是叫实例化,因为a是有独一无二的地址。 4.
空类
中如果加一个虚函数或者多个,实际上
空类
是有一个虚指针。32位编译器下
空类
(有函数应该不算
空类
),实例化后,大小就是4字节,64位为8字节。 原因:因为一个类和一个对象实例化后,就是定义
1、
空类
的
sizeof
为1,为什么?
一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小。 首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的。 用
sizeof
运算符对一个类型名操作,得到的是具有该类型实体的大小。add charles 空结构体:struct d{} 的
sizeof
也是1。 如果 Class A; A obj; 那么
sizeof
(A)==
sizeof
(obj) 那么siz
C语言
69,369
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章