C++基础--class的大小
在这里列出了空类,类有函数,值,没有函数的大小,注意Class是默认字节对齐
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string>
using namespace std; #include <stdio.h> class x
{ }; class cx
{
public:
cx()
{ }
~cx()
{ }
}; class cxHasVirtual
{
public:
cxHasVirtual()
{ }
virtual ~cxHasVirtual()
{ }
}; class cxHasVirFunc
{
public:
cxHasVirFunc()
{ }
virtual ~cxHasVirFunc()
{ } virtual int setA()
{
int a = ;
} }; class cxHasVal
{
public:
cxHasVal()
{ }
~cxHasVal()
{ }
int a;
char y; }; class cxHasValFunc
{
public:
cxHasValFunc()
{ } ~cxHasValFunc()
{ }
int a;
char y; int getASize()
{
return sizeof(a);
}
void setA()
{
a = ;
}
}; int main()
{
x emptyX;
int emptySize = sizeof(x);
printf("size of empty class is %d\n\n", emptySize); cx *classx = new cx();
int clsizePt = sizeof(classx);
int clsize = sizeof(cx);
printf("size of class point is %d\n", clsizePt);
printf("size of class is %d\n\n", clsize); cxHasVirtual *classVirtual = new cxHasVirtual();
int clsizeVirtualPt = sizeof(classVirtual);
int clsizeVirtual = sizeof(cxHasVirtual);
int clsizeVirFunc = sizeof(cxHasVirFunc);
printf("size of class point has virtual is %d\n", clsizeVirtualPt);
printf("size of class has virtual is %d\n\n", clsizeVirtual);
printf("size of class has virtual destruct and fun is %d\n\n", clsizeVirFunc); cxHasVal *hasVal = new cxHasVal();
hasVal->a = ;
int hasValSize = sizeof(hasVal);
int rVal = sizeof(cxHasVal);
printf("size of class Point has val is %d\n", hasValSize);
printf("size of class has val is %d\n\n", rVal); cxHasValFunc *hasValFunc = new cxHasValFunc();
int hasValFuncSize = sizeof(hasValFunc);
int rValFunc = sizeof(cxHasValFunc);
printf("size of class Point has val is %d\n", hasValFuncSize);
printf("size of class has val Func is %d\n\n", rValFunc); return ;
}
运行结果:

结论:1.空类的大小和含有构造和析构函数的类的大小为1个字节;
2.New的class的大小为指针所占用的内存,为4,与类的大小以及是否含有变量和函数无关;
3. 含有虚函数的类,由于虚函数需要建立一张虚函数表,指针指向虚函数表,而指针的大小为4,所以含有虚函数的类大小增加4个字节;
4. 含有函数和变量的类的大小为变量的大小的集合,这里变量为int和char, 由于字节对齐,大小为8;
5.类的大小与函数无关
C++基础--class的大小的更多相关文章
- C++基础--struct的大小
在修改别人的代码的过程中,发现很多人会把struct和struct的定义混淆,在这里主要是为了提醒自己Struct定义的规范性. #include <stdio.h> struct x{ ...
- (转)CSS字体大小: em与px、pt、百分比之间的对比
CSS样式最混乱的一个方面是应用程序中文本扩展的font-size属性.在CSS中,你可以用四个不同的单位度量来显示在web浏览器中的文本 大小.这四个单位哪一种最适合Web? 这个问题引起了广泛的争 ...
- 【Socket】Java Socket基础编程
Socket是Java网络编程的基础,了解还是有好处的, 这篇文章主要讲解Socket的基础编程.Socket用在哪呢,主要用在进程间,网络间通信.本篇比较长,特别做了个目录: 一.Socket通信基 ...
- 【转】Java Socket编程基础及深入讲解
原文:https://www.cnblogs.com/yiwangzhibujian/p/7107785.html#q2.3.3 Socket是Java网络编程的基础,了解还是有好处的, 这篇文章主要 ...
- docker 系列 - 基础镜像环境和Docker常用命令整理
=======================docker 基础镜像环境 alpine=======================可以使用 docker search 命令搜索指定的 image, ...
- 【Socket】Java Socket编程基础及深入讲解
Socket是Java网络编程的基础,了解还是有好处的, 这篇文章主要讲解Socket的基础编程.Socket用在哪呢,主要用在进程间,网络间通信.本篇比较长,特别做了个目录: 一.Socket通信基 ...
- moviepy音视频剪辑:与大小相关的视频变换函数crop、even_size、margin、resize介绍
☞ ░ 前往老猿Python博文目录 ░ 一.引言 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>介绍了剪辑基类的fl.fl_time.fx方法,在<movi ...
- CSS字体大小: em与px、pt、百分比之间的对比
CSS样式最混乱的一个方面是应用程序中文本扩展的font-size属性.在CSS中,你可以用四个不同的单位度量来显示在web浏览器中的文本大小.这四个单位哪一种最适合Web? 这个问题引起了广泛的 ...
- 【TCP/IP】之Java socket编程API基础
Socket是Java网络编程的基础,深入学习socket对于了解tcp/ip网络通信协议很有帮助, 此文讲解Socket的基础编程.Socket用法:①.主要用在进程间,网络间通信. 文章目录如下: ...
随机推荐
- FPGA基础学习(9) -- 复位设计
目录 1. 常见问题 2. 常见的复位方式 3. 合理的复位设计 3.1 复位电平 3.2 异步复位同步化 3.3 恰到好处的复位 4. 补充 4.1 所谓的上电初始化 参考文献 一开始接触到FPGA ...
- tomcat增加运行内存
内容为: set JAVA_OPTS=%JAVA_OPTS% -server -Xms2048m -Xmx2048m -XX:PermSize=212M -XX:MaxPermSize=512m 在m ...
- Codeforces - tag::graphs 大合集 [占坑]
520B 给定初始n和目标m,存在两种操作\(-1\)和\(×2\),要求最少操作次数 无脑解法是BFS,不能解决稍大的规模 当n>m时,输出n-m 否则逆向处理,转换为m到n的最小操作次数,存 ...
- python中的try/except/else/finally语句
与其他语言相同,在python中,try/except语句主要是用于处理程序正常执行过程中出现的一些异常情况,如语法错误(python作为脚本语言没有编译的环节,在执行过程中对语法进行检测,出错后发出 ...
- shell map使用
# 定义初始化map declare -A map=([") # 输出所有key echo ${map[@]} # 输出key对应的值 "]} # 遍历map for key in ...
- java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
在重构项目的时候,遇到了mybatis的一个异常: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and ...
- DES加密之强制更新下载分离器
数据加密算法(Data Encryption Algorithm,DEA)是一种对称加密算法,很可能是使用最广泛的密钥系统,特别是在保护金融数据的安全中,最初开发的DEA是嵌入硬件中的.通常,自动取款 ...
- init_config_file.lua
--[[ 读取限流配置 --]] --获取共享内存 local limit_req_store = ngx.shared.limit_req_store --初始化拒绝 URI 列表 reject_u ...
- 一些学习比较好的网站,及es6学习好网站,前端用的相关库,及知道的插件
图形可视化:d3js echarts https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects ...
- Google Map API抓取地图坐标信息小程序
因为实验室需要全国城市乡镇的地理坐标,有Execl的地名信息,需要一一查找地方的经纬度.Google Map地图实验室提供自带的查找经纬度的方法,不过需要一个点一个点的手输入,过于繁琐,所以自己利用G ...