C++常识——C++类的大小

C++内存大小计算 C++内存大小计算 转载时请注明出处和作者联系方式 文章出处:http://blog.csdn.net/chenchong08 作者联系方式:vision_chen@yeah.net 说明:笔者的操作系统是32位的。 class A {}; sizeof( A ) = ? sizeof( A ) = 1 明明是空,为什么编译器说它是1呢? 空同样可以实例化,每个实例在 阅读详情

说明:
1.非纯虚函数的所有成员函数都不占类的大小
2.纯虚函数由于需要有一个指针指向虚表,因此会生成一个虚指针,占用4个字节
3.成员变量根据对齐规则不同而占用不同的内存
4.静态函数以及静态成员变量都不占用类的大小
5.空类占用1个字节

#include <iostream>
using namespace std;

class VirtualClass
{
    virtual void size() = 0;
private:

};

class intClass
{
private:
    int m_int;      //0-3
    char c;         //4-7
    int m_int2;     //8-15
    double db;      //16-23
    char c2;        //24-31 (总共占用32字节,8字节对齐!!)
};


class staticVariableClass
{
private:
    static int size();
};

class staticFuncClass
{
private:
    static int m_int;
};

class emptyClass {

};

#define OUT_CLASS_SIZE(_Class)  do{\
    cout << #_Class << " size is:" << sizeof(_Class) << endl;\
}while (0);

int main()
{
    OUT_CLASS_SIZE(VirtualClass);           //4 ——纯虚函数占用4个字节
    OUT_CLASS_SIZE(intClass);               //32——非静态成员变量根据内存对齐方式占用内存
    OUT_CLASS_SIZE(staticVariableClass);    //1 ——静态成员变量不占用类大小
    OUT_CLASS_SIZE(staticFuncClass);        //1 ——静态成员函数不占用类大小
    OUT_CLASS_SIZE(emptyClass);             //1 ——空类占用1个字节
    getchar();
    return 0;
}

int staticVariableClass::size()
{
    return 0;
}

运行结果:
这里写图片描述

C++虚函数表、虚继承,大小 C++虚函数表所大小?有虚函数的对象比没有虚函数的对象所字节大小有区别吗?虚继承、虚函数继承中具体大小的计算;构造函数里调用虚函数是实引用还是虚引用? 阅读详情

相关推荐

从Blender舞步到夜空画卷:基于Pix飞控的无人机编队灯光秀全链路开发实践

本文详细介绍了基于Pixhawk飞控的无人机编队灯光秀全链路开发实践。从Blender三维动画设计、QGroundControl地面站二次开发与MAVLink通信桥接,到PX4飞控的OFFBOARD模式路径控制与LED灯光驱动实现,最后通过Gazebo仿真验证并完成真机组装与首飞。文章为无人机爱好者提供了一套完整的、从创意设计到夜空执行的开源解决方案,重点阐述了多机同步与灯光控制的核心技术挑战与应对策略。

zeta9的博客 538

C++ 虚函数和纯虚函数 virtual

总结:1、虚函数可以被执行;2、含有虚函数的可以被实例化;3、含有纯虚函数不能被实例化,只能被继承,且子必须实现。结论:1、系统是64位,才用8字节对齐;2、virtual void func1(){} 一个指针字节。总结:1、虚函数空间;2、纯虚函数空间。

m0_56306892的博客 195

C++经典面试题之深入解析带虚函数空的内存大小

本文详细地分析了空、虚函数、静态数据成员、普通成员函数、普通继承、虚拟继承等内存中分配中的大小,并分析其内存分配的原因和原理。

╰つ栺尖篴夢ゞ 811

C++大小

C++大小

q1281405619的博客 824

关于C++的空间用详解

关于C++的空间用详解

qq_55895529的博客 794

C++面向对象的多态性、纯虚函数、空大小——C++学习记录04

C++面向对象的多态性、纯虚函数、空大小

qq_1593724363的博客 516

C++大小详尽讲解

        C++大小,是一个比较经典的问题,学过C++后,应该对大小有清晰的认识,长话短说,本文精简凝练,我们进入正题!!!1.大小与什么有关系?     与大小有关的因素:普通成员变量,虚函数,继承(单一继承,多重继承,重复继承,虚拟继承)     与大小无关的因素:静态成员变量,静态成员函数及普通成员函数2.空     空即什么都没有的,按上面的说法,照理说大小应该是...

longjialin93528的博客 2万+

c++大小计算

c++大小计算并没有想象中那么简单,因为涉及到虚函数成员,静态成员,虚继承,多继承以及空等,不同情况有对应的nisan方式,在此对各种情况进行总结。 首先要明确一个概念,平时所声明的只是一种型定义,它本身是没有大小可言的。 我们这里指的大小,其实指的是的对象所大小。因此,如果用sizeof运算符对一个型名操作,得到的是具有该型实体的大小。关于/对象大小的计算 首先,

rotation博客 3万+

c++纯虚函数和空用的字节

一个指针在32位系统中8个字节

m0_54342473的博客 424

含有虚函数的sizeof大小

01 #include   02 using namespace std;   03   04 class Base1{   05 virtual void fun1(){}   06 virtual void fun11(){}   07 public:   08 virtual ~Base1();   09 };   10   11 class Base2{   12

Felix的专栏 1649

C++虚继承下的大小

虚拟继承确定是要增加一张虚函数表和一个虚基指针表嘛

Jason_Lee155的博客 1838

C/C++中各种数据型、结构体、 字节数分析与总结

一、基本数据型在不同编译器下字节数比较与总结,测试过程不详述了,直接看下表结论! 下表中右侧总结部分是依据字节数进行着色,同一种颜色型的数据成员字节数要么一致,要么具有同样的性质,这样比较容易理解的记忆。 字节数 16位编译器 32位编译器 64位编译器 总结 ...

Bigcat_u的博客 2185

大小sizeof

静态数据成员被编译器放在程序的一个global data members中,它是的一个数据成员,但不影响大小。* 把A的成员拆开看,char为1,int为4,所以是1+(3)+4+1+(3)=12,()为字节补齐。* @brief 8 8 16 派生虚继承多个虚函数,会继承所有虚函数的vptr。* @brief 对于包含虚函数的,不管有多少个虚函数,只有一个虚指针,vptr的大小。* @brief 对于虚单函数继承,派生也继承了基的vptr,所以是8字节。* @author 光城。

分享记录一下工作中遇到的相关知识 329

C++虚函数和多态

C++ 虚函数 多态 虚析构等基础 final override

m0_46375273的博客 965

C++中虚函数继承的内存大小计算

前半部分转自https://www.cnblogs.com/SeekHit/p/7570247.html 其中为32位字节对齐,后半部分给出自己的理解。 字节对齐的原理见链接https://www.cnblogs.com/0201zcr/p/4789332.html(注意64位系统虚函数指针8字节,32位4字节) 计算一个对象的大小时的规律: 1、空、单一继承的空、多重继承的空...

qq_31673283的博客 3592

C++对象的大小(1)

大小计算的时候,只包括: 1 的非静态成员数据的大小之和. 2 如果有虚函数的话,还要加上指向虚函数的指针(vptr)大小 3 边缘调整(字节对齐)后的大小 4 与中的构造函数,析构函数以及其他的成员函数无关. ...

doubleintfloat的博客 1485

关于C++大小(size)

1. 空 class A { }; void main() { printf("sizeof(A): %d\n", sizeof(A)); getchar(); } 得到结果为:1。 的实例化就是给每个实例在内存中分配一块地址。空被实例化时,会由编译器隐含的添加一个字节。所以空的size为1。 2.虚函数 class A { vir...

weixin_30539835的博客 281

深入理解C++和对象(上)

1.面向对象的初步引入 C语言注重过程 C++注重面向对象 例如:点外卖 C语言:注重下单–>接单–>送单这个过程,通过一个个函数来实现这三个过程 C++:客户–>商家–>骑手 C++更注重对象之间的交互,利用对象之间的交互来完成任务,每个对象都有不同的行为,例如客户下单,商家接单制作,骑手送单 C++通过这三个对象之间的行为交互来实现整个送外卖的过程,通过这个例子我们可以先简单理解一下c++中的对象概念 2.的引入 在C++中,结构体内不仅可以定义数据,还可以定义函数 例如

weixin_51476766的博客 1209

Python爬取公交线路信息及站点shp数据 文末附数据下载地址

三、现在已经获取到了各个线路名称、链接,以及所途径的上下行站点,那么接下来就应该对开始对第三页url进行信息采集,即本次爬虫的最终目的:爬取所有站点的GPS坐标数据。但坑就坑在,二环一号线属于环线,所以只有左侧有站点数据,而其他非环线车次的站点数据分有上下行,如果用正则匹配,则分不清楚到底哪些是上行站点哪些是下行站点。以前爬过百度地图,当时用的是API平台,加上网站比较规范,所以标签节点什么的都比较清晰,但这次由于特殊原因所选择的网站为公交网,废话不多说直接开始吧。checi=二环一号线。

J_Giser的博客 1294

制冷毛细管计算.xls

毛细管计算

上一篇: C++11 智能指针——shared_ptr
下一篇: C++11智能指针——weak_ptr
wssjlrw
博客等级 码龄12年 2粉丝 16原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值