一个只带有纯虚函数的类占有的空间是4字节,why?

james_hw 2010-06-27 08:14:46
一个空类占有的空间是一字节;
一个只带有函数的类占有的空间是一字节;
一个只带有纯虚函数的类占有的空间是4字节;
why?

以上环境在VC下试验,测试代码如下

class B_class
{
protected:
virtual void print()=0;
// virtual void read()=0;
// virtual void write()=0;
};

int main()
{
printf("size=%d",sizeof(B_class));
return 1;
}
...全文
456 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzmlove007 2010-06-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyu637 的回复:]
有虚函数就会有一个虚函数表指针,指针的大小是4
[/Quote]


这里说得很清楚
james_hw 2010-06-27
  • 打赏
  • 举报
回复
嗯,明白了
ArthurJava 2010-06-27
  • 打赏
  • 举报
回复
纯虚函数包含一个vptr指针,32位系统下指针占用4个字节
liutengfeigo 2010-06-27
  • 打赏
  • 举报
回复
YES.
vptr 4字节
空类 1字节
cattycat 2010-06-27
  • 打赏
  • 举报
回复
虚函数表指针vptr占4字节,空类编译器会插1个字节为了和其对象区分开,有自己的地址。
pengzhixi 2010-06-27
  • 打赏
  • 举报
回复
vptr啊
wuyu637 2010-06-27
  • 打赏
  • 举报
回复
有虚函数就会有一个虚函数表指针,指针的大小是4
昵称很不好取 2010-06-27
  • 打赏
  • 举报
回复
那1个字节是编译器添加进去的,为了区分不同的对象
但类中有虚指针的时候就不需要添加了就可以区分了

65,186

社区成员

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

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