社区
C++ 语言
帖子详情
C++中的空类中有什么?空类的大小为何不是0
xhz1234
2011-08-16 11:41:44
C++空类中有哪些数据成员和成员函数,
C++空类大小为何是1
如果一个文件中定义了超过256个空类会出现什么问题?(这个是面试时,被问到的)
...全文
1227
14
打赏
收藏
C++中的空类中有什么?空类的大小为何不是0
C++空类中有哪些数据成员和成员函数, C++空类大小为何是1 如果一个文件中定义了超过256个空类会出现什么问题?(这个是面试时,被问到的)
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gavinli1991
2013-05-01
打赏
举报
回复
lz,那1个字节是用来占一个空间,获取这个地址的,地址才是唯一标识符,你别把地址跟空间大小混乱了。
xhz1234
2011-08-20
打赏
举报
回复
谢谢各位,但是还是不太理解!请各位再详细点!空类里面除了4个成员函数外,到底还有什么
FrankHB1989
2011-08-17
打赏
举报
回复
[Quote=引用 3 楼 supermegaboy 的回复:]
主要原因如2楼所述,但不一定是一字节,标准并无规定最高派生对象的大小只能是一字节,而是至少一字节。
[/Quote]
+1,不过要排除bit-field。
顺便,标准明确规定基类子对象大小可以是0字节,即通常所说的EBO。
zmshy2128
2011-08-16
打赏
举报
回复
第一个问题: C++空类中有哪些数据成员和成员函数?
可以有静态成员变量、静态成员函数、虚函数、也可以包含普通函数(里边可以调用虚函数和静态成员数)。一般空类作为虚基类,其虚函数可视为基类对各继承类的接口约定。
第二个问题:C++空类大小为何是1
前面已回答
第三个问题:
只有sb考官才出这样的问题,就像问a = ++a+a++ 一样的问题。
飞天御剑流
2011-08-16
打赏
举报
回复
主要原因如2楼所述,但不一定是一字节,标准并无规定最高派生对象的大小只能是一字节,而是至少一字节。
Jxiaoshen
2011-08-16
打赏
举报
回复
每个实例在内存中都有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址.所以大小为1.
http://apps.hi.baidu.com/share/detail/32205414
机智的呆呆
2011-08-16
打赏
举报
回复
百度一下,你就知道
机智的呆呆
2011-08-16
打赏
举报
回复
我觉得第一个问题
空类里有 默认构造函数 析构函数 拷贝构造函数 拷贝复制运算符 这几个函数,是编译器要隐式声明的,如果这些函数被用到了,编译器还要隐式定义。
zmshy2128
2011-08-16
打赏
举报
回复
[Quote=引用 9 楼 jiangzhiya 的回复:]
空类中如果有虚函数,那么这个类的大小就为4,这还是空类吗?请指教
[/Quote]
我在4楼的回答有误了,呵呵。
看来应该是:可以有静态成员变量、静态成员函数、也可以包含普通函数(里边可以调用静态成员变量、静态成员函数、实际上功能等同于 静态成员函数)。
那么这个类也基本也没什么用了,无非是将全局变量和全局函数封装在一个类中,还不如将其封装在一个名字空间中。
黯然飘香
2011-08-16
打赏
举报
回复
空类中如果有虚函数,那么这个类的大小就为4,这还是空类吗?请指教
吾子墨鸿
2011-08-16
打赏
举报
回复
第三个问题比较奇怪。。。。
pathuang68
2011-08-16
打赏
举报
回复
那个1字节是个“占位符”。
一叶之舟
2011-08-16
打赏
举报
回复
前两个问题4楼已经回答了,
第三个问题,没什么意义,如果非要说有什么问题,只能说你在程序定义了太多无用的东西而已。
godblessing_hr
2011-08-16
打赏
举报
回复
你定义了一个空类后,其实空类里面会自动生成一些内容的
class Empty {
public: Empty(); // 缺省构造函数
Empty(const Empty& rhs); // 拷贝构造函数
~Empty(); // 析构函数 ---- 一般非虚的(除非继承体系有虚函数)
Empty &operator=(const Empty& rhs); // 赋值运算符
Empty* operator&(); // 取址运算符 const Empty* operator&() const;
};
不难解释为何要占一个字节。
换个角度,倘若你不给他分一个字节,在下面你继承这个空类的时候,从哪里确定有这个父类呢?
C++
中
空类
有哪些函数?
空类
的
大小
?
空类
的
大小
至少为1字节,用于存储对象的地址。小伙伴们又有疑问了,这
空类
可以拿来干嘛?在代码编写
中
起到什么作用和意义呢?在
C++
中
,
空类
(即没有任何成员变量和成员函数的类)虽然看似简单,但在代码编写
中
却有着...
为什么
C++
中
空类
和空结构体
大小
为1?
对于结构体和
空类
大小
是1这个问题,首先这是一个
C++
问题,在C语言下空结构体
大小
为0(当然这是编译器相关的)。这里的
空类
和空结构体是指类或...为什么不是0? 这是因为,
C++
标准
中
规定,“no object shall have the...
【
C++
】
空类
的
大小
是多少?0 or 1?
分析正确的结论为什么将
空类
的
大小
定为1呢? 学习前提 如何计算类的
大小
1.假设 我们先假设
空类
的
大小
就是0,那用这个
空类
去定义三个对象c1,c2,c3. 首先要知道,这三个对象是不是一样的? 不是呀,这是三个不同的...
C++
空类
大小
为什么不是0?
C++
中
空类
大小
是1,而不是0。讲解
空类
大小
为什么是1而不是0的原因。
c++
空类
的
大小
我想应该是:成员函数和static成员是属于类层面的,它不属于对象,那...注意:然而在 c 语言
中
,空的结构体的
大小
是 0,目前找到的原因是:在C语言
中
引入结构时,当时还没有对象的概念。1,首先什么样的才是
空类
呢?...
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章