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用法:①.主要用在进程间,网络间通信. 文章目录如下: ...
随机推荐
- 洛谷 P3285 / loj 2212 [SCOI2014] 方伯伯的 OJ 题解【平衡树】【线段树】
平衡树分裂钛好玩辣! 题目描述 方伯伯正在做他的 OJ.现在他在处理 OJ 上的用户排名问题. OJ 上注册了 \(n\) 个用户,编号为 \(1\sim n\),一开始他们按照编号排名.方伯伯会按照 ...
- 用selenium工具做软件自动化测试的面试题及答案
1.selenium中如何判断元素是否存在? 答:isElementPresent 2.selenium中hidden或者是display = none的元素是否可以定位到? 答:不可以定位到 3.s ...
- Linux安装python3.6.3
一: (1)wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz 下载安装包 (可以到网站下载,然后上传到Linux) (2)ta ...
- Oracle使用总结
1. 在ORACLE中Service Name即为数据库名称: 2. 在做删除操作时,需要加Commit进行操作提交: 3. 使用sqlldr将数据进行批量导入到ORACLE中: 3.1 Sqlld ...
- C#编写运行在Linux环境下的采用Mediainfo来获取多媒体文件信息的代码
项目开始设计的是运行在windows下,所以一开始采用的是windows服务模式来获取多媒体文件信息,后来要求调整为可以在Linux下运行,经过这两天的资料查找,实现了Linux下通过.NET来获取多 ...
- DataTable对象
DataTable表示一个内存中的关系数据表,可以独立创建和使用,也可以有其他.NET Framework对象使用,最常见的情况是作为DataSet的成员使用.DataTable对象由DataColu ...
- echart使用设置一个柱形的最小宽度
因为echart的横坐标的个数不同会影响柱形图的宽度 如果只有三个月的就会是这样的 这样一来效果就不是很好,所以想做成如下效果 思路: 只是需要向xDate的值设置成想要的长度,如上图就是设置12,如 ...
- oracle connect by用法
先用scott用户下的emp表做实验.emp表有个字段,一个是empno(员工编号),另一个是mgr(上级经理编号)下面是表中所有数据 1 select * from emp start with e ...
- mysql修改表名
mysql修改表名 SQL语句为: alter table table_name rename to new_table_name 参考:http://blog.csdn.net/xrt95050/a ...
- Python基础(7) - 函数
Python 函数是一个能完成特定功能的代码块,可在程序中重复使用,减少程序的代码量和提高程序的执行效率.在python中函数定义语法如下: def function_name(arg1,arg2[, ...