C++ 类的大小计算
2019独角兽企业重金招聘Python工程师标准>>>
class A
{
};class B
{char ch;virtual void func0() { }
};class C
{char ch1;char ch2;virtual void func() { }virtual void func1() { }
};class D : public A, public C
{int d;virtual void func() { }virtual void func1() { }
};class E : public B, public C
{
public:int e;virtual void func0() { }virtual void func1() { }//子类里(E)没有实现func(),所以在E的子类里B的vfptr指向C的func()和E的func1()virtual void func123() { }
}int main()
{//result=1,空类,大小为1cout << "A=" << sizeof(A) << endl;//result=8,4(vfptr,4)+4(char ch,内存对齐,4) = 8 cout << "B=" << sizeof(B) << endl; //result=8 , 4(vfptr,4)+4(char ch1,char ch2,内存对齐,4) = 8 cout << "C=" << sizeof(C) << endl; //result=12, 4(类D的vfptr,4)+4(存在基类的char ch1,char ch2,内存对齐,4)+4(int d) = 12D obj_d; //首先VPTR指向的虚函数表中保存的是类D中的两个虚函数的地址cout << "D=" << sizeof(obj_d) << endl; //result=20,(多继承)继承多少个有虚函数的类,就有多少个虚函数指针,也即这几个虚函数指针组成了自己的vfptr(编译器不再单独给自己的虚函数插vfptr)//4(B的vfptr)+4(char ch)+4(C的vfptr)+4(C中 char ch1,char ch2)+4(E 中int d) = 20//这个可以从调试下看出来E obj_e;obj_e.e = 123;cout << "E=" << sizeof(obj_e) << endl; return 0;
}
转载于:https://my.oschina.net/Yuqingmu/blog/468947
C++ 类的大小计算相关推荐
- C++ 类的定义、作用域及大小计算,限定访问符,this指针
C++ 4 类与对象(上) 面向对象的特点 类的定义 访问限定符 类的作用域 类的大小计算 this指针 this指针的特性 面向对象的特点 抽象 封装 继承 多态 类的定义 类的两种定义方式: 1. ...
- 对于类对象模型的理解(类大小计算+大小端字节序)
类对象模型 如何理解类与对象 类: 通俗理解,类相当于一个模型框架,限定了类有哪些成员变量,但从底层来看,内存并没有分配实际的物理空间来存储类 对象: 类对象即为类的具体描述,当类对象进行实例化过程中 ...
- 使用sizeof计算类的大小
类的sizeof大小一般是类中的所有成员的sizeof大小之和,这个就不用多说. 不过有两点需要注意:1)当类中含有虚成员函数的时候,例如: class B { float a; public: vi ...
- sizeof计算类的大小
1 sizeof一个空类 class A { };cout<<sizeof(A)<<endl;//1 注:class A是一个空类型,它的实例不包含任何信息,本来求sizeof ...
- View工作原理(三)视图大小计算过程(measure过程)
一.android中view的measure过程总概 视图大小计算的过程是从根视图measure()方法开始,接着该方法会调用根视图的onMeasure()方法,onMeasure()方法会对所包含的 ...
- Android—Bitmap图片大小计算、压缩与三级缓存
Bitmap对象占用内存大小: bitmap.getByteCount() 图片所占内存大小计算方式:图片长度 x 图片宽度 x 一个像素点占用的字节数. Android Bitmap使用的三种颜色格 ...
- Java对象内存大小计算
背景 今天办公室两个人事妹子因为一道Java试题各持己见,誓死捍卫自己的答案(对,是HR没错 -- 程序猿快没活路了). 题:字符串 "7天学会JAVA" 占用的内存空间是 ( ) ...
- sizeof()来求一个类的大小
基本概念 一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小. 首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的. 用sizeof运算符对一个类型名操作,得 ...
- 图像的大小计算 位深和色深
图像的大小计算 1.位深和色深 位深:即在某一分辨率下,每一个像素点可以有多少种色彩来描述,单位为"bit"(位).典型的色深是8-bit.16-bit.24-bit和32-bit ...
最新文章
- L1-016 查验身份证(2016年天梯赛模拟赛第8题)
- 鼠标滚轮 控制作用滚动
- 【数字信号处理】线性时不变系统 LTI ( 判断某个系统是否是 “ 非时变 “ 系统 | 案例三 )
- 嵌入式开发之zynq——zynq开发环境搭建
- 卸载angular版本
- 一篇超级详细的jsp+servlet+jdbc+mysql检验登录操作(IntelliJ IDEA)
- vim插件推荐之auto-pairs
- SparkContext转化为JavaSparkContext
- 关于Tomcat如何处理Open Redirect的问题
- db2增加decimal类型字段小数位_05725.16.1Hive中decimal类型字段.0结尾数据显示异常问题处理...
- 如何自定义MongoDB的存储桶
- 【Elasticsearch】Resizing Elasticsearch shards for fun and profit
- 用 Python 写一个 Kaggle 比赛排行榜的爬虫
- Aspose.Pdf for .NET控件PDF文档到Excel、EPS、SVG等的转换
- https方式nginx 代理tomcat访问不带www的域名301重定向跳转到www的域名帮助seo集中权重...
- java 64位时间戳转换32位时间戳
- 如何快速调整图片亮度和对比度?
- Python多继承及MRO顺序
- win7无法连接打印机拒绝访问_打印机共享时拒绝访问
- 【重要】有三AI知识星球不再对外公开!还想加入的有哪些途径?
热门文章
- Elasticsearch 参考指南(多索引)
- 打开WORD2016提示 您正在试图打开带有宏的 。。。。 解决办法
- Unity 跑酷Demo难题总结
- Mac OS X安装Git
- Android 图片 OOM问题总结
- VanDyke.SecureCRT.v7.0.0.326官方英文版x86 x64 + Keymaker-ZWT
- [iPhone-Sqlite3]sqlite3_prepare_v2() 不返回 SQLITE_OK,调试
- 设计模式 - Iterator(迭代器)
- 【发现】Warcraft III v1.22 不用正版CDKey上Battle.net 续篇
- 【iOS Tips】002-实现“简单单例模式”的几种方法?