社区
MS-SQL Server
帖子详情
请问C++空类class Empty { };用sizeof(Empty)测出的大小是多少,为什么?
zqshan
2000-06-22 08:43:00
...全文
101
3
打赏
收藏
请问C++空类class Empty { };用sizeof(Empty)测出的大小是多少,为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zqshan
2000-06-22
打赏
举报
回复
究竟是几个byte
茂奇软件
2000-06-22
打赏
举报
回复
four bytes.
a point to vtable.
jansen zhu.
true_hero
2000-06-22
打赏
举报
回复
1
这是Visual C++为了能比较两个类在都为空类时是否为同一个对象用地址比较而作的硬性规定
C++
空类
和空结构体为什么是
sizeof
是1
重点: 1.
空类
和空结构体的
sizeof
是1 2.
空类
和空结构体的
sizeof
大小
可以由编译器自己控制,编译器往往会给一个
空类
隐含的加一个字节,这样
空类
在实例化后在内存得到了独一无二的地址。 3.实例化的意思就是创建一个对象。比如
class
A。声明一个A a;其中a就是叫实例化,因为a是有独一无二的地址。 4.
空类
中如果加一个虚函数或者多个,实际上
空类
是有一个虚指针。32位编译器下
空类
(有函数应该不算
空类
),实例化后,
大小
就是4字节,64位为8字节。 原因:因为一个类和一个对象实例化后,就是定义
为什么
C++
空类
的
大小
是1个字节
#include
class
EmptyA {}; int main() { std::cout << "
sizeof
EmptyA " <<
sizeof
(EmptyA) << std::endl; return 0; }; 结果如下:
sizeof
EmptyA 1 然而在C语言中空结构体的
大小
是0,空结构体
大小
是0我们貌似可以理解,但为什么到
C++
中,
空类
的
大小
却是1呢? 实际上, 这是类结构体实例化的原因, 空的类或结构体同样可以被实例化, 如果定义对空的类或者
为什么
空类
大小
是1
我们可能都知道,
C++
中
空类
的
大小
是1。 #include <iostream>
class
EmptyA {}; int main() { std::cout << "
sizeof
EmptyA " <<
sizeof
(EmptyA) << std::endl; return 0; }; 结果如下:
sizeof
EmptyA 1 然而在C语言中空结构体的
大小
是0,空结构体
大小
是0我们貌似可以理解,但为什么到
C++
中,
空类
的
为什么
空类
的
大小
是1
我们可能都知道,
C++
中
空类
的
大小
是1。 #include <iostream>
class
EmptyA {}; int main() { std::cout << "
sizeof
EmptyA " <<
sizeof
(EmptyA) << std::endl; return 0; }; 结果如下:
sizeof
EmptyA 1 然而在C语言中空结构体的
大小
是0,空结构体
大小
是0我们貌似可以理解,但为什么到
C++
中,
空类
的大
C++
空类
知识点学习
1、概述。
空类
,是指编译器不会生成任何成员函数的
class
。对于
空类
,编译器不会生成任何的成员函数,只会生成1个字节的占位符。 2、为何Empty
Class
占一字节呢? 如果定义对Empty
Class
取
sizeof
()的值为0,那么该空
class
实例化出100个对象时,在内存地址上就不能区分该
class
实例化出的对象,这是难以想象及接受的!因此,为了实现每个实例在内存中都有一个独一无二的地址,编...
MS-SQL Server
34,576
社区成员
254,587
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章