C++空类的大小

先介绍一个问题,一个空类的大小是多少?

我们不妨测试一下:

1 #include <iostream>
 2 using namespace std;
 3 
 4 class vpoet
 5 {
 6 
 7 };
 8 
 9 int main()
10 {
11     cout<<"sizeof(vpoet)="<<sizeof(vpoet)<<endl;
12     return 0;
13 }

运行结果:

C++空类的大小

以我们的想法,既然这个类没有任何成员变量和成员函数那么肯定是类的大小为0。其实我们可以考虑一下关于内置

类型,比如int类型 当我们定义一个int a[5],我们设&a[0]=MEM;那么&a[1]是不是就等于&a[1]=MEM+sizeof(int)呢,这

样数组中每个元素都在一段连续的不同的内存上。那么同样的道理,当我们定义一个空类类型的数组 vpoet b[5],这

候&b[1]=&b[0]+sizeof(vpoet)

如果按照我们的想法如果一个空类的大小为0,那么岂不是b[1]与b[0]的内存产生了重叠,这样定义该类类型的数组显然就失去了

意义,另一方面C++中要求对于类的每个实例都必须有独一无二的地址,那么编译器自动为空类分配一个字节大小,这样便保证了每

个实例均有独一无二的内存地址。

原文链接: https://www.cnblogs.com/vpoet/p/4680059.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/219755

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午10:39
下一篇 2023年2月13日 上午10:39

相关推荐