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用法:①.主要用在进程间,网络间通信. 文章目录如下: ...
随机推荐
- 干掉Vivado幺蛾子(2)-- 快速替换debug probes
目录 1. 什么是ECO 2. 操作步骤 参考文献: 我们做项目,进入找bug阶段时,需要用ILA捕获相关的信号.之前我做项目,每改动一次探针(debug probes),都要重新综合.实现,通常要花 ...
- selenium+python+unittest:一个类中只执行一次setUpClass和tearDownClass里面的内容(可解决重复打开浏览器和关闭浏览器,或重复登录等问题)
unittest框架是python自带的,所以直接import unittest即可,定义测试类时,父类是unittest.TestCase. 可实现执行测试前置条件.测试后置条件,对比预期结果和实际 ...
- python全栈开发_day4_if,while和for
一.if 1)if的用途 if常用于判断. 2)if的语法 tag=True tag2=True if tag: print("代码") elif tag2: print(&quo ...
- 2019 CCPC-Wannafly Winter Camp Day4(Div2, onsite)
slove 6/11 A.夺宝奇兵 Code:zz Thinking:zz 贪心即可.这条路线里,点n1和点n2肯定是相连的,接下来,点(n-1)1和点(n-1)2分别是和n1和点n2相连的,一共有两 ...
- vue 移动端,页面左右页面切换效果(切换过程中会出现白屏效果,布吉岛怎么优化,后来就发布前就弃用了)
<transition name="left"> <router-view v-if="getCms" class="Router& ...
- [转] maven打包可运行的fat-jar的简单方法
[From] https://blog.csdn.net/tearsky253/article/details/75948721 问题 在使用“mvn package”命令编译application之 ...
- 导出excel设置样式(Aspose.Cells)
Aspose.Cells.Style style = xlBook.Styles[xlBook.Styles.Add()];style1.Pattern = Aspose.Cells.Backgrou ...
- KB4284826 远程桌面发生身份验证错误,要求的函数不受支持
win -r -> run -> gpedit.msc 链接:https://www.zhangfangzhou.cn/authentication-error.html远程桌面发生 ...
- MCD的正确格式
[[99NN/etWLLP/33qnzb/eMNf5mwlh9hUsT+FYsTIU15REWiQd99vwIyZqDUDIRtvsgCP0BXDlvHJlbDR+NPhyL50wS2ThIiEwD/ ...
- (转)nginx日志配置指令详解
这篇文章主要介绍了nginx日志配置指令详解,nginx有一个非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志,需要的朋友可以参考下日志对于统计排错来说非常有利的.本文总结了nginx日 ...