关于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。

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值