C++空类sizeof字节数

C++中的空类所占多少个字节呢?一直以来都想到有这个问题,但是却忘了去看,今天一个学长说面试面到了,我想应该是4吧。我想到的是内存对齐。

但是试了一下,并不是4而是1.开始我以为是Dev C++的问题,因为那个GCC很老了,后来测试了一下发现 不是编译器的问题。

网上找了找相关资料,说是空类也可以实例化。既然要实例化,那么不同的实例肯定是有区别的。为了便于区分这些实例,编译器会默认给他们分配一个字节的空间,便于区别。

那么,空类的子类呢?不难想象sizeof运算之后也是1.

//Blog: http://www.programlife.net/
#include <iostream>
using namespace std;
 
class B{};
 
class C : public B{};
 
int main()
{
cout << "sizeof(B): " << sizeof(B) << endl;
cout << "sizeof(B): " << sizeof(C) << endl;
 
return 0;
}

上面的程序运行后输出两个1.

转自:http://www.programlife.net/sizeof-empty-cpp-class-not-return-zero.html

下一个面试题:说明输出结果,并解释。

#include <iostream>
using namespace std;
 
class A
{
private:
char array[0];
};
 
class B{};
 
class C : public B{};
 
int main()
{
cout << "sizeof(A):" << sizeof(A) << endl;
cout << "sizeof(B):" << sizeof(B) << endl;
cout << "sizeof(C):" << sizeof(C) << endl;
 
return 0;
}

B和C的sizeof操作返回1在上一篇文章已经说过了。至于sizeof(A)暂时不知道什么原因,输出了0,哪位朋友知道的可以解释一下。

转自:http://www.programlife.net/cpp-sizeof-problems-2.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值