类对象的sizeof大小

1、
class CBase
{
int a;
char *p;
};cout<<"sizeof(CBase)="<<sizeof(CBase)<<endl;    答案 为8
2、
 
class CBase
{
};

运行cout<<"sizeof(CBase)="<<sizeof(CBase)<<endl;

sizeof(CBase)=1;实例化,所谓类的实例化就是在内存中分配一块地址,每个实例在内存中都有独一无二的地址。同样空类也会被实例化(别拿豆包不当干粮,空类也是类啊),所以编译器会给空类隐含的添加一个字节,这样空类实例化之后就有了独一无二的地址了。所以空类的sizeof为1。

3、添加虚函数后

class CBase
{
public:
CBase(
void);
virtual ~CBase(void);
private:
int a;
char *p;
};

再运行:sizeof(CBase)=12,为什么?:“C++ 类中有虚函数的时候有一个指向虚函数的指针(vptr),在32位系统分配指针大小为4字节“

4、继承
class CChild :
public CBase
{
public:
CChild(
void);
~CChild(void);
private:
int b;
};

运行:cout<<"sizeof(CChild)="<<sizeof(CChild)<<endl;

输出:sizeof(CChild)=16;

可见子类的大小是本身成员变量的大小加上子类的大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值