C++中空类占一字节原因详解
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++中空类占一字节原因详解相关推荐
- @Transactional类内部访问失效原因详解
一.原理 Spring之所以可以对开启@Transactional的方法进行事务管理,是因为Spring为当前类生成了一个代理类,然后在执行相关方法时,会判断这个方法有没有@Transactional ...
- Java类的加载过程详解 面试高频!!!值得收藏!!!
受多种情况的影响,又开始看JVM 方面的知识. 1.Java 实在过于内卷,没法不往深了学. 2.面试题问的多,被迫学习. 3.纯粹的好奇. 很喜欢一句话: 八小时内谋生活,八小时外谋发展. 望别日与 ...
- 中yeti不能加载_第二十章_类的加载过程详解
类的加载过程详解 概述 在 Java 中数据类型分为基本数据类型和引用数据类型.基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载 按照 Java 虚拟机规范,从 Class 文件到加载到内 ...
- php自动加载类与路由,PHP实现路由与类自动加载步骤详解
这次给大家带来PHP实现路由与类自动加载步骤详解,PHP实现路由与类自动加载步骤详解的注意事项有哪些,下面就是实战案例,一起来看一下. 项目目录如下 入口文件index.php<?php def ...
- C++友元函数和友元类(C++ friend)详解
在看VISP视觉库的时候遇到友元函数: Friends void swap (vpDetectorAprilTag &o1, vpDetectorAprilTag &o2) 在定义一个 ...
- modulenotfounderror: no module 或modulenotfounderror: no module named 'matplotlib._path' 原因详解及解决办法
环境:Ubuntun14.04LTS +Anaconda4.2+tensorflow1.2+pycharm community2017.3.3 运行.py文件时,1.出现ImportError: No ...
- python跨函数调用变量_对python中不同模块(函数、类、变量)的调用详解
首先,先介绍两种引入模块的方法. 法一:将整个文件引入 import 文件名 文件名.函数名( ) / 文件名.类名 通过这个方法可以运行另外一个文件里的函数 法二:只引入某个文件中一个类/函数/变量 ...
- 字符串类习题、面试题详解(第二篇)
第一篇链接:字符串类习题.面试题详解(第一篇) 6题:回文串(竞赛基础题) 输入一个字符串,求出其最长回文子串.子串的含义是:在原串中连续出现的字符串片段.回文的含义是:正着看和倒着看相同,如abba ...
- java类修饰词和内部类详解
java类修饰词和内部类详解 控制属性: 同一类内 同一包内 子类 所有类 public 可 可 可 ...
最新文章
- oracle 多行合并成一行
- OS存储器管理(一)
- Android中怎样调用自带的Base64实现文件与字符串的编码和解码
- boost::range_reverse_iterator相关的测试程序
- 76. Minimum Window Substring
- LeetCode 413 等差数列划分
- 即时系统和非即时系统的区别?_家庭装修,能不能让热水来得快一点——即时热水系统...
- tensorflow只用CPU运行的方法
- 【月径流预测】基于matlab海洋捕食者算法优化BP神经网络月径流预测【含Matlab源码 2002期】
- jq控制div是否展示_jQuery判断一个元素是否可见的方法
- NodeJs安装教程:看教程一步步学会安装NodeJs
- 点到点(point-to-point) 与 端到端(end to end)
- linux搭建mysql集群
- appfuse mysql_Appfuse:起步
- 服务器密码已修改是什么意思,服务器密码已更改请输入新密码
- P1024 [NOIP2001 提高组] 一元三次方程求解
- Windows文件夹开启大小写敏感
- 苹果cms模板_苹果CMSv10怎么更换模板?
- Centos7.6挂载IPSAN【iscsi存储】并应用为LVM分区
- android视频快速压缩视频教程,Android上的快速视频压缩