C++里是如何确定类的大小的?

作者&投稿:亢贵 (若有异议请与网页底部的电邮联系)
怎么样求c++类的大小~

class A//空类占1 总共24
{
public:
int a;//4
double b;//8
char c;//1
};
int main()
{
cout << sizeof(A);
}

其实就是一个数据对齐问题:1,这个涉及到计算机底层。一般计算机组原理里面会介绍到。比如唐朔飞的那本就有涉及到。2,在windows 核心编程 这本书中也提到了。 3,如果类是继承的,并且有虚函数,则类对象大小也不只是类中属性所占大小。
编译器有一个选项,为了优化内存操作,都按照16位对齐,所以上面的类占了4个字节。如果这样写:
#include using namespace std;#pragma pack(1) //要求编译器按照实际数据结构进行压缩内存class MyClass{public: unsigned char YxType; unsigned short YxNO;};int main(){ cout<<sizeof(MyClass)<<endl; return 0;}这样的结果就是3了

所有数据成员的大小,加所有基类大小,加一个指向用于支持RTTI运行时类信息及虚函数的结构的指针.这是一般编译器的做法.C++允许编译器重排成员顺序,所以不会有像C中的为了对齐而加入的附加包.不过不建议猜测类大小,应用sizeof实测

定义类型


护肤品中成分非常多,如何能够确定护肤品中含不含激素?
检验护肤品中含不含激素的方法如下:一般情况下,可以采用暂停观察法,即如果在停用化妆品后数天(通常为3~15天)皮肤出现红斑、丘疹、发痒、渗出、毛细血管扩张及色素沉着等现象,就是激素依赖性皮炎的临床表现。化妆品里添加激素,主要有两个目的:1、针对皮肤健康的普通人,在使用了含有激素的化妆品后...

excel表格里面,有很多人员信息如何将表格中的A类全部列出来,B类全部列...
鼠标选中表格内容所包含的全部单元格,然后点击菜单中的排序→自定义排序→主要关键字选“备注”→确定

如何确定IC卡里面的芯片型号?看0扇区0块中的信息,可以知道吗?_百度...
0扇区0块的信息是不支持读写的,它是出厂的时候固化的信息,其实IC卡的原始序列号就是存放在0扇区0块。要确定IC卡芯片的型号,可以通过对其做卡片请求的时候返回的Request(u8mode)和Select_Card(void)来确定卡片类型基本上可以确定是哪个厂家的哪个型号。IC卡分为接触式IC卡和非接触式IC卡,接触式IC卡又...

如何区分家里的虫子?
3. 它们通常呈现黑色或棕色,身体只有几毫米长。如果在家里发现蜱虫,应立即采取措施清除,并预防未来出现更多蜱虫。4. 另一种可能是黑皮蠹。黑皮蠹常见于粮食和纸张中,身体呈黑色或棕色,稍显圆形,有一定硬度。5. 尽管黑皮蠹不是寄生虫,但它们会啃食食物,导致变质或腐烂。如果无法确定虫子种类,使用...

...的增加和减少时分别记在哪方?(不要复制罗列所有的,我只要确定...
一、关于费用类科目划分 在会计科目表里没有费用类科目的分类,费用类是会计六要素之一 费用类在科目表里,其在成本类科目和损益类科目里都有。费用类科目,费用增加,借记费用类科目,贷记相关消耗的资产科目;费用减少,贷记费用类科目,按业务发生情况,借记本年利润或者相关资产科目(冲减费用)二、...

excel怎么把一列里一个单元格和后面的空值归为一类,以此类推?
选中{空值},确定,进行第4步 04 在空白的单元格处输入=,在点中A1单元格,进行第5步 05 按CTRL+ENTER键,就全部填充完成了 有时候我们经常需要设置excel数值为0不显示。为大家整理的三种方法 开启分步阅读模式 工具材料:excel 电脑 操作方法 01 方法一:如下图所示,我们想要将excel单元格里面的...

板带钢课程设计题目,速度制度是如何确定的?
速度制度的选择 中厚板轧制一般采用可调速的可逆式轧制,正确选择这类轧机的速度制度是快速轧钢的重要环节。(1 )速度制度的类型 可逆式轧制的速度图有两种类型:1 )梯形速度图 如图 2-2 所示。其各部分组成如下:0 ~时间内,转速从 0 增至 ,为空载加速阶段;时间内,转速由 增至 (为轧件...

债券型基金里,分A\/B类和C类,这两种基金有什么区别?
主要在申购费上、风险性上、申购收费模式上、付费方式上存在区别。具体的区别如下:1、申购费上:A类一般是代表前端收费,B类代表后端收费,而C类是没有申购费,即无论前端还是后端,都没有手续费;而A、B两类分类的债券基金,一般A类为有申购费,包括前端和后端,而B类债券没有任何申购费。2、风险...

平安保险里的1-4类职业是哪4类
第一类:国家机关、党群组织、企业、事业单位负责人; 第二类:专业技术人员; 第三类:办事人员和有关人员; 第四类:商业、服务业人员。职业分类:农、林、牧、渔业;制造业;仓储和邮政业;信息传输、计算机服务和软件业;批发和零售业;住宿和餐饮业;金融业;房地产业;租赁和商务服务业;科学研究...

在大学里艺术类专业到底包括哪些专业?
1。雕塑系:倡导艺术理想和人文精神的素质教育,注重专业技能的系统化教学,注重创新能力和实践能力的培养。依托传统、立足当代、关注未来,旨在为社会主义现代化建设需要,培养具备良好的综合素质,扎实的专业基础、广博的理论学识和创造性艺术实践能力的雕塑创作、教学和研究的专门人才。 主要课程: 素描、...

独山县18688799010: C++里是如何确定类的大小的? -
道善达体: 所有数据成员的大小,加所有基类大小,加一个指向用于支持RTTI运行时类信息及虚函数的结构的指针.这是一般编译器的做法.C++允许编译器重排成员顺序,所以不会有像C中的为了对齐而加入的附加包.不过不建议猜测类大小,应用sizeof实测

独山县18688799010: 请问,c++中的类的大小如何确定??? -
道善达体: shape类包含 int(4个字节) float(4个字节)char(1个字节)char类型指针(4个字节)所以shape的大小应该是4和1的最小公倍数 并且还要大于(4+4+4+1),所以应该是16.不论ca设置为多长的字符串,shape.ca存放的是字符串的首地址,只占四个字节.

独山县18688799010: C++中类的大小是如何计算的? -
道善达体: 其实就是一个数据对齐问题: 1,这个涉及到计算机底层.一般计算机组原理里面会介绍到.比如唐朔飞的那本就有涉及到. 2,在windows 核心编程 这本书中也提到了. 3,如果类是继承的,并且有虚函数,则类对象大小也不只是类中属性所...

独山县18688799010: C++中如何得到类对象的长度.. -
道善达体: sizeof(abc), 编译时编译器就能确定类abc的结构和内存大小.

独山县18688799010: C++中,包含各种成员变量的类大小 -
道善达体: 跟结构体是一样的,类可以看成一个特殊的结构的.为空时所占字节是1,其余要看类中变量的大小,如果你知道怎么算结构体的大小,类的也会算.

独山县18688799010: C++ sizeof(类)的大小? -
道善达体: 类的大小主要和其成员变量以及虚拟函数指针有关,与普通成员函数无关A没有任何成员变量和虚拟函数,相当于空类,内存中用1字节表示B和C都虚拟继承A,因此都有一个虚拟继承表指针,因此大小为该指针大小4D有两个虚拟继承表指针,因此大小为8

独山县18688799010: c++程序是依据什么来判断一个变量的大小 -
道善达体: 数字在内存中是以2进制代码保存的,因此只要进行比较二进制数的大小就可以了; 而对于常量而言,其实无非是一个引用变量指向了具体的数值,作对比的还是指向对象的大小; 此外,如果是字母做比较大小,则依据其编码,即ASCII 值来作比较,例如,b的编码值大于a,则比较大小时b>a就成立

独山县18688799010: C++ 中 sizeof 如何计算 一个多重虚拟继承的类的大小? -
道善达体: 简单,如果一个基类是虚基类,那么只有一个该类的实例,如果不是虚基类,那么每继承一次,就算一个实例.然后把所有实例的 size 加起来,就是最终派生类的 size 了.

独山县18688799010: 关于C++类size -
道善达体: virtual 占 4 ,虽然A 占一,但在B里排列应该是1111 :virtual1---- :a这个补齐,内存对齐问题. 在给你个例子:class A{ char a; int b; char c;};class B{ char a; char c; int b;};你去sizeof(A),sizeof(B),看是不是一样大小,这样你就明白了.;

独山县18688799010: 怎样计算C++继承,虚继承,虚函数类的大小 -
道善达体: 如果不涉及虚字眼,那么就是按照struct方式计算成员大小,如果涉及虚,那么建议看看《深度探索C++对象模型》,因为涉及了多继承和具体编译器实现,如果你仅仅想知道数值,那么sizeof是你的首选,必要时使用typeid获取对象的类型,然后使用sizeof.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网