栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

一个空类的大小

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一个空类的大小

如果类A是一个空类,那么sizeof(A)的值为多少?

   sizeof(A)的值为1,因为编译器需要区分这个空类的不同实例,分配一个字节,可以使这个空类的不同实例拥有独一无二的地址。

如果在该类型中添加一个构造函数和析构函数,再对该类型求sizeof,得到的结果又是多少?

还是1。调用构造函数和析构函数只需要知道函数的地址即可,而这些函数的地址只与类型相关,而与类型的实例无关(成员函数是属于类的,实例只是拥有调用权,而且成员函数的静态绑定,也是在编译阶段完成的),编译器也不会因为这两个函数而在实例中添加任何额外的信息。

如果析构函数标记为虚函数呢?

C++编译器一旦发现一个类型中有虚函数,就会为该类型生成虚函数表,并在该类型的每一个实例中添加一个指向虚函数表的指针。在32位机器上,一个指针占4个字节的空间,因而sizeof得到4;如果是64位的机器,一个指针占8字节的空间,结果为8。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/833111.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号