关于sizeof 各类型大小、类的大小

sizeof浅析(三)——求大小 sizeof大小和求结构体的大小,有一定的相似性,但又不完全相同,因为存在这继承和派生、存在着虚函数。 1、空大小 对于一个空,使用sizeof求得其大小为1。 2、简单 如下定义一个class A { public: int a; private: char b; };         使用sizeof求这种简单,结果和求结构体的sizeof是一 阅读详情

今天研究了下sizeof,复习了下各个类型的大小。顺便把之前一直不明白的类的一些东西搞清楚了。

 

#include <stdio.h>
enum eEnum {TXT, JPG};

class CA
{
public:
	virtual void fV(){};
protected:
private:
};
class CB
{
public:
	void f(){};
protected:
private:
};
class CC
{
public:
	void f(){};
	virtual void fV(){};
protected:
private:
};
class CD
{
public:
	static int a;
protected:
private:
};
class CE
{
public:
protected:
private:
};

int main()
{
	eEnum eA = TXT;
	char chChar = 0;
	short nShort = 0;
	int nInt = 0;
	long lLong = 0;
	float fFloat = 0;
	double dDouble = 0;
	int nSize = sizeof(eA);		//4
	nSize = sizeof(chChar);		//1
	nSize = sizeof(nShort);		//2
	nSize = sizeof(nInt);		//4
	nSize = sizeof(lLong);		//4
	nSize = sizeof(fFloat);		//4 小数点后位数少
	nSize = sizeof(dDouble);	//8 小树点后位数多
	CA a;
	nSize = sizeof(a);			//4 虚函数指针 占4字节
	CB b;
	nSize = sizeof(b);			//1 普通函数为各实例公有,所以不计入size
	CC c;
	nSize = sizeof(c);			//4 虚函数指针 占4字节 普通函数为各实例公有,所以不计入size
	CD d;
	nSize = sizeof(d);			//1 static变量不计入size,因为所有实例只有一个static变量,静态成员是类的所有对象中共享的成员
	CE e;
	nSize = sizeof(e);			//1 空类 什么都没有 但是实例得分配空间 所以大小是1

	return 0;
}



 比较有趣的是类的部分。

    1. 普通函数,因为是各个实例共有的,所以不计入size;
    2. 虚函数,因为会有一个指针,所以会占4个字节的大小;
    3. 空类,即使什么都没有,也要占1个字节的大小,因为空类实例化的时候也要分配空间;
    4. static变量,是所有实例共享的,所以不计入size。

至于还有成员变量的,一般就加上这个成员变量的大小就行了。

 

C++中虚继承sizeof大小 参考文献:《深度探索C++对象模》 运行平台:Visual Studio 2015 最近在研读大佬Lippman的《深度探索C++对象模》,对其中的虚继承sizeof大小产生了兴趣,因此编码测试了一下。 1. 基为空 废话不说,先上源码: # include &lt;iostream&gt; using namespace std; class X { }; clas... 阅读详情

相关推荐

sizeof(Vector<>)大小问题

sizeof(record)大小为多少?答案是:20(G++编译器下)了解string,int的朋友很熟悉,string和int在G++下都是4字节,这样看来 grades的大小应为12字节。给grades中放入三个整值,100,110,120,sizeof(grades),竟然还是12!由此说来,sizeof(vector)的大小,跟容器里面存放多少数据无关,它是在编译期确定的一个值,仅。

zzhongcy的专栏 1214

sizeof

1、空sizeof是1。空是指没有成员的中的函数不占空间,除非是虚函数。 如: class A         {              public:                       A(){}                      ~A(){}                      void fun(){}

华秋实的专栏 568

sizeof和strlen计算数组或指针大小

👻创建一个整数组1.sizeof(数组名)表整个数组的大小。4*4=162.a表示首元素地址,a+0还是首元素地址。地址大小为4或8字节3.*a表示首元素,整一维数组中每个元素都是4字节4.a+1表示跳过首元素,指向第二个元素地址。地址大小为4或8字节5.a[1]表示第二个元素,整一维数组中每个元素都是4字节6.&a是整个数组的地址,地址大小为4或8字节7.sizeof(∗&a)–>sizeof(a)–>整个数组大小,4*4=16🌟∗和&互为逆运算,会抵消。

2301_77203593的博客 3283

各类数据sizeof大小

sizeof 是一个关键字,它是一个编译时的运算符,用于判断变量或数据的字节大小sizeof 运算符可用于获取、结构、共用体和其他用户自定义数据大小

保持一颗永远好奇、勇于探索的心 7727

sizeof()来求一个大小

基本概念一个的实例化对象所占空间的大小? 注意不要说大小,是的对象的大小.首先,大小是什么?确切的说,只是一个定义,它是没有大小可言的。 用sizeof运算符对一个名操作,得到的是具有该实体的大小。如果 Class A; A obj; 那么sizeof(A)==sizeof(obj) 那么sizeof(A)大小和成员的大小总和是什么关系呢,很简单,一个对象的大小大于等于所

好记性不如烂笔头的专栏 6181

sizeof(结构体)大小判断

结构体字节数大小的计算(多种情况)

ajin156的博客 8234

C语言使用sizeof和strlen计算各类变量的大小(笔记)

sizeof是C语言中的一个运算符,用来计算数据所占空间的大小;strlen是一个函数,用来计算字符串长度。

L_Naive的博客 1490

sizeof()大小总结

sizeof 运算符 查询对象或大小 在需要知道对象的实际大小时使用语法: sizeof() sizeof 表达式 解释 返回 的对象表示的字节数。 返回当 表达式 求值时所返回的的对象表示的字节数。 #include <iostream> class A { }; int main() { A a; std::cout<< sizeof a <<endl; //OK 1 //std::cout<< sizeo

一面之媛 5518

C++大小——sizeof(class)

第一:空大小 class CBase { }; 运行cout&amp;lt;&amp;lt;&quot;sizeof(CBase)=&quot;&amp;lt;&amp;lt;sizeof(CBase)&amp;lt;&amp;lt;endl; 输出 sizeof(CBase)=1; 为什么空的什么都没有是1呢? 先了解一个概念:的实例化,所谓的实例化就是在内存中分配一块地址,每个实例在内存中都有独一无二的地址。同样空也会被实例

Hello World 3291

sizeof() 大小,空大小

一个的实例化对象所占空间的大小? 注意不要说大小,是的对象的大小. 首先,大小是什么?确切的说,只是一个定义,它是没有大小可言的。 用sizeof运算符对一个名操作,得到的是具有该实体的大小。 如果 Class A; A obj; 那么sizeof(A)==sizeof(obj) 那么sizeof(A)大小和成员的大小总和是什么关系呢,很简单,一个对象的大小大于等于所有

liu_qiqi的专栏 2万+

C++大小sizeof

1、空 class Base {}; sizeof(Base)等于1。Base是一个空在进行实例化的时候就是给一个实例分配一块内存,对一个空进行实例化的时候,同样需要分配一块内存,编译器默认分配一个字节大小的内存给空实例,所以空大小为一个字节。 2、一般非空 class Base { int val; char ch; }; sizeof(Base)...

hgpenglin的博客 2910

计算数组大小的方法—sizeof

在C语言中,我们经常需要使用数组来存储一组数据。而在对数组进行操作的时候,我们通常需要知道数组的大小。C语言提供了一个关键字sizeof来计算数据大小,包括数组

weixin_47712251的博客 7895

C语言运算符之sizeof

C语言中sizeof的各种运用场景详解

weixin_34481217的博客 2901

【C语言】:sizeof操作符的使用和各种常见数据大小

C语言提供了一个解决方法,创造了一个别名size_t,用来统一表示sizeof的返回值,对应 系统的 sizeof的返回值,可能是unsigned int,也可能是unsigned long long。如图所示,虽然a是int,5也是整,但是s是short,首先在sizeof中的表达式并没有真实的运算,s的值仍是4,其次是整个表达式仍是short大小为两个字节。sizeof是一个关键字,也是一个操作符,是专门用来计算大小的,3.sizeof 的计算结果是。

2301_77900444的博客 701

sizeof计算大小规则(一看就会)

看了几遍 sizeof 的内容,老是忘记,这里做下笔记,以供复习与参考。 sizeof(a)用来计算a所占字节大小,其中a可以是名,也可以是变量,亦或是对象。 1) sizeof (int); // 2) sizeof (a); //int a;变量 3) sizeof (a); //class A; A a;对象 需要注意的是,sizeof在32位操作系统和64位操作系统中...

Winters____的博客 9188

使用sizeof()计算大小

《剑指offer》这本书里第22页有讲到sizeof()计算大小的问题,在网上查阅了一些资料,进行了一些总结。欢迎补充指正! 1、大小       sizeof()大小一般是中的所有成员的sizeof()大小之和,这个就不用多说。确切的说,用sizeof运算符对一个名操作,得到的是具有该实体的大小。注意:只是一个定义,它本身是没有大小可言的。         对象大

竭尽全力的专栏 8030

sizeof()各种汇总

我的电脑是64位,但是用vs调试的是32位的。 注意:前面是语句,注释后面是结果和解释 1.基本sizeof():  sizeof(char)  // 1  一般都以这个为基础,为最小的单位,其值为1,其他的sizeof()都是以这个为倍数 sizeof(bool) //  1 sizeof(int)  //  4 sizeof(long)  = sizeof(long in...

SeventhBlue 7955
上一篇: 关于Union 联合体
下一篇: gethostbyname出错 获取错误描述 Host name lookup failure
胡老哈
博客等级 码龄16年 50粉丝 130原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值