C/C++编程笔记:为什么在C++中空类的大小不为零?

本文探讨了C++中空类大小不为零的原因,解释了这一现象是为了确保不同对象拥有不同的地址。同时,介绍了编译器在处理空基类时的优化策略,并通过实例展示了空类及其派生类的sizeof结果,揭示了C++内存布局的奥秘。
摘要由CSDN通过智能技术生成

首先,我们来预测以下程序的输出? 

#include<iostream>

using namespace std;

class Empty {};

int main()

{

cout << sizeof(Empty);

return 0;

}

输出:1

 

空类的大小不为零。通常是1个字节。确保两个不同的对象具有不同的地址是非零的。请参见以下示例。 

#include<iostream>

using namespace std;

class Empty { };

int main()

{

Empty a, b;

if (&a == &b)

cout << "impossible " << endl;

else

cout << "Fine " << endl;

return 0;

}

输出:Fine

 

由于相同的原因(不同的对象应该具有不同的地址),“ new”总是返回指向不同对象的指针。请参见以下示例。 

#include<iostream>

using namespace std;

class Empty { };

int main()

{

Empty* p1 = new Empty;

Empty* p2 = new Empty;

if (p1 == p2)

cout << "impossible " << endl;

else

cout << 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值