class Base{

void f(){}

};

class Derived:public Base(){

void f1(){}

};

class Derived:public Base(){

void f2(){}

};

sizeof(Base);

sizeof(Derived1);

sizeof(Deirived2);

  • Base类没有任何数据成员,但是Base类的对象占用的空间却不是0,由于对象存储在内存中,不占用空间的对象在内存中无法标识,因此Base类的对象在内存中会有一个占位符,占用空间为1个字节。
  • Derived1类继承Base类,没有任何数据成员,因此Derived1类的对象也只有一个占位符,占用空间为1个字节。
  • Derived2类虚继承Base类,没有任何数据成员,但是由于虚继承的关系,Derived2类的对象中会有一个指向虚基类的只恨,指针占用的空间为4个字节,因此Derived2类的对象占用空间为4个字节。
  • sizeof(Base)=1;size(Derived1)=1;size(Derived2)=4

计算虚继承中对象占用的空间相关推荐

  1. Java 中对象占用内存大小计算

    原文地址 mp.weixin.qq.com byte 与 bit bit:位,比特.信息的最小单位,二进制数中的一个位数 (二进制位),其值为"0" 或"1": ...

  2. C++虚继承中的虚基类表

    虚继承主要解决多重继承会在子类中存在多份拷贝的问题,这不仅浪费空间,而且存在二义性. 在之前的 C++ 继承中已经说过虚继承基本概念,这里不再赘述.这篇文章主要探究虚继承的原理.文章中多处给出了类实例 ...

  3. C++虚继承中构造函数和析构函数顺序问题以及原理

    多重继承的问题:多个类B,C,-继承同一个类A导致如果X继承了B,C,-那么在X中将还有多个A中成员的拷贝,如果想要访问A中的成员如果不加名字空间将会导致二义性,这种拷贝大多是没有实际意义的,为了避免 ...

  4. C++ 继承 | 对象切割、菱形继承、虚继承、对象组合

    文章目录 继承 继承的概念 继承方式及权限 using改变成员的访问权限 基类与派生类的赋值转换 回避虚函数机制 派生类的默认成员函数 友元与静态成员 多继承 菱形继承 虚继承 组合 继承 继承的概念 ...

  5. C++对象模型探索 / 普通类对象占用的空间

    一.空类的大小 #include <iostream>class A{};int main() {A obja;std::cout << "obja 的地址:&quo ...

  6. meo学习笔记4:C++中对象占用内存情况

    C++中一个对象到底占用多少内存? 1.前言 这个问题对于开发可能不是那么的关注,但是其实在C++相关的题中却经常出现,下面将针对性的记录说明下这个问题 2.直蹦主题 2.1 重要结论 1)非静态成员 ...

  7. C++虚继承(七) --- 虚继承对基类构造函数调用顺序的影响

    继承作为面向对象编程的一种基本特征,其使用频率非常高.而继承包含了虚拟继承和普通继承,在可见性上分为public.protected.private.可见性继承比较简单,而虚拟继承对学习c++的难度较 ...

  8. 解析一个Java对象占用多少内存空间

    说明: alignment, 对齐, 比如8字节的数据类型long, 在内存中的起始地址必须是8的整数倍. padding, 补齐; 在对象所占据空间的末尾,如果有空白, 需要使用padding来补齐 ...

  9. C++中的虚继承与虚基类

    1.Cpp中的虚继承与虚基类 在多继承时,很容易产生命名冲突的问题,即使我们很小心地将所有类中的成员变量和成员函数都命名为不同的名字,命名冲突依然有可能发生,比如典型的是菱形继承,如下图所示: 类A派 ...

  10. C++>继承,继承方式及其比较,子类和父类对象指针,派生类的默认成员函数,虚继承,继承与友元,继承与静态成员

    继承 继承的概念与定义 概念: 继承是指一个子类(或称为派生类)继承父类(或称为基类)的特征(属性和操作).继承是面向对象程序设计时实现代码复用的重要手段,它允许在原有的类的基础上进行扩展,增加功能, ...

最新文章

  1. 你不知道的JavaScript·第一部分
  2. Android:学习笔记(一)
  3. 2.1 js 基础--select深入
  4. weex 安装过程中遇到的坑
  5. python 按月份分组_django ORM queryset按月、周、TruncMonth分组
  6. 聊聊编程那些破事-0.Prehistory
  7. js高级技巧之函数节流
  8. HTML5实现扫描识别二维码/生成二维码
  9. 贪吃蛇游戏设计及算法
  10. 常用APP签名存档以及获取签名的几种方式介绍
  11. 图算法(十一):紧密中心度算法(Closeness Centrality)【适用场景:社交网络中关键节点发掘】【计算一个节点到所有其他可达节点的最短距离的倒数再累积归一化】【值越大,节点越靠近图中心】
  12. 植物大战僵尸修改关卡及金币
  13. .sh执行文件sed命令出错 bad flag in substitute command: ‘U‘ Mac终端
  14. 给编程入门者的唠叨话(全栈路线)
  15. 创建视图簇SE54并SE93赋予事务代码
  16. centos yum 安装jdk
  17. 中科院用不起的知网,一年主营业务收入11.6亿元,毛利率高过工商银行
  18. 中级口译口试心得(转)
  19. 仅靠努力和胆大,就改变命运的机会越来越少了
  20. 2022年化工自动化控制仪表考试总结及化工自动化控制仪表模拟考试题

热门文章

  1. 【转】JQuery中$.each 和$(selector).each()的区别详解
  2. window2008 、 oracle11.2g 无法imp,dmp。
  3. Response.Redirect在新窗口打开
  4. xstream使用的第二个小问题
  5. Redis 集群(学习笔记十)
  6. 演示使用Metasploit入侵Windows
  7. jQuery形式可以计算,它包含了无线电的变化价格,select价格变化,删除行动态计算加盟...
  8. POJ 2391 Ombrophobic Bovines【二分+最大流】
  9. 修改Win7启动顺序和启动菜单名称
  10. 的谐音歌词_今日新歌,李诞肯定最烦这张谐音梗专辑