C++中空类占一字节原因详解 - XSH的博客 - CSDN博客
https://blog.csdn.net/xiong452980729/article/details/71077144

在C++中空类会占一个字节,这是为了让对象的实例能够相互区别。具体来说,空类同样可以被实例化,并且每个实例在内存中都有独一无二的地址,因此,编译器会给空类隐含加上一个字节,这样空类实例化之后就会拥有独一无二的内存地址。如果没有这一个字节的占位,那么空类就无所谓实例化了,因为实例化的过程就是在内存中分配一块地址。

注意:当该空白类作为基类时,该类的大小就优化为0了,这就是所谓的空白基类最优化。

#include<iostream>using namespace std;class test
{
};int main()
{test a, b;cout << "sizeof(test): " << sizeof(test) << endl;cout << "addr of a: " << &a << endl;cout << "addr of b: " << &b << endl;system("pause");return 0;
}

这个占位字节仅仅是用来占位。

空白基类最优化:

#include<iostream>using namespace std;class test
{
};class derive :public test
{private:int a;
};int main()
{test a, b;cout << "sizeof(test): " << sizeof(test) << endl;cout << "sizeof(derive): " << sizeof(derive) << endl;cout << "addr of a: " << &a << endl;cout << "addr of b: " << &b << endl;system("pause");return 0;
}

C++中空类占一字节原因详解相关推荐

  1. @Transactional类内部访问失效原因详解

    一.原理 Spring之所以可以对开启@Transactional的方法进行事务管理,是因为Spring为当前类生成了一个代理类,然后在执行相关方法时,会判断这个方法有没有@Transactional ...

  2. Java类的加载过程详解 面试高频!!!值得收藏!!!

    受多种情况的影响,又开始看JVM 方面的知识. 1.Java 实在过于内卷,没法不往深了学. 2.面试题问的多,被迫学习. 3.纯粹的好奇. 很喜欢一句话: 八小时内谋生活,八小时外谋发展. 望别日与 ...

  3. 中yeti不能加载_第二十章_类的加载过程详解

    类的加载过程详解 概述 在 Java 中数据类型分为基本数据类型和引用数据类型.基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载 按照 Java 虚拟机规范,从 Class 文件到加载到内 ...

  4. php自动加载类与路由,PHP实现路由与类自动加载步骤详解

    这次给大家带来PHP实现路由与类自动加载步骤详解,PHP实现路由与类自动加载步骤详解的注意事项有哪些,下面就是实战案例,一起来看一下. 项目目录如下 入口文件index.php<?php def ...

  5. C++友元函数和友元类(C++ friend)详解

    在看VISP视觉库的时候遇到友元函数: Friends void swap (vpDetectorAprilTag &o1, vpDetectorAprilTag &o2) 在定义一个 ...

  6. modulenotfounderror: no module 或modulenotfounderror: no module named 'matplotlib._path' 原因详解及解决办法

    环境:Ubuntun14.04LTS +Anaconda4.2+tensorflow1.2+pycharm community2017.3.3 运行.py文件时,1.出现ImportError: No ...

  7. python跨函数调用变量_对python中不同模块(函数、类、变量)的调用详解

    首先,先介绍两种引入模块的方法. 法一:将整个文件引入 import 文件名 文件名.函数名( ) / 文件名.类名 通过这个方法可以运行另外一个文件里的函数 法二:只引入某个文件中一个类/函数/变量 ...

  8. 字符串类习题、面试题详解(第二篇)

    第一篇链接:字符串类习题.面试题详解(第一篇) 6题:回文串(竞赛基础题) 输入一个字符串,求出其最长回文子串.子串的含义是:在原串中连续出现的字符串片段.回文的含义是:正着看和倒着看相同,如abba ...

  9. java类修饰词和内部类详解

    java类修饰词和内部类详解 控制属性: 同一类内     同一包内      子类     所有类 public            可             可         可       ...

最新文章

  1. oracle 多行合并成一行
  2. OS存储器管理(一)
  3. Android中怎样调用自带的Base64实现文件与字符串的编码和解码
  4. boost::range_reverse_iterator相关的测试程序
  5. 76. Minimum Window Substring
  6. LeetCode 413 等差数列划分
  7. 即时系统和非即时系统的区别?_家庭装修,能不能让热水来得快一点——即时热水系统...
  8. tensorflow只用CPU运行的方法
  9. 【月径流预测】基于matlab海洋捕食者算法优化BP神经网络月径流预测【含Matlab源码 2002期】
  10. jq控制div是否展示_jQuery判断一个元素是否可见的方法
  11. NodeJs安装教程:看教程一步步学会安装NodeJs
  12. 点到点(point-to-point) 与 端到端(end to end)
  13. linux搭建mysql集群
  14. appfuse mysql_Appfuse:起步
  15. 服务器密码已修改是什么意思,服务器密码已更改请输入新密码
  16. P1024 [NOIP2001 提高组] 一元三次方程求解
  17. Windows文件夹开启大小写敏感
  18. 苹果cms模板_苹果CMSv10怎么更换模板?
  19. Centos7.6挂载IPSAN【iscsi存储】并应用为LVM分区
  20. android视频快速压缩视频教程,Android上的快速视频压缩

热门文章

  1. 输入五个城市从小到大排序-c语言
  2. 硬纪元干货|appMagics伏英娜:优质IP和直播内容嫁接,带来全新AR体验
  3. 为什么不是 GitBook 而是 GitChat?
  4. Revit二次开发之技能篇(二)———轴网尺寸标注
  5. 图像处理之仿油画效果
  6. 线代笔记:线性相关性,向量组的秩
  7. 【Linux】——库函数
  8. 一文搞懂各大APP!网站python网络爬虫!
  9. VBA打印机设置(列出所有打印机名字、选用合适的打印机并设计端口号)
  10. nachos操作系统(一)