网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

详解C++中对象的大小-创新互联

这篇文章给大家介绍详解C++中对象的大小,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

目前创新互联已为上千余家的企业提供了网站建设、域名、网页空间、网站托管运营、企业网站设计、峨眉山网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

看三个问题:


  • C++中函数占不占对象的大小

  • 空类的大小是多少?

  • 如果类中有虚函数,类的大小是多少?


一,C++中函数占不占对象的大小

看一段代码:

详解C++中对象的大小

可以看出,类的大小即为类的属性a的大小为4,函数并不占对象的大小。

那么这个的原因是什么呢?

原因:

这样定义的好处就是为了节省空间的大小。

假设此时类中有10个函数,类又定义了100个对象。如果每个对象都包含一个函数的大小,那么就需要占用1000个函数空间的位置,这样极大的消耗了资源。

实际上类的函数是放在代码区的,哪个对象需要调用函数,则从代码区调用,因为函数并不是对象独有属性,所以并不冲突,这样仅仅占10个函数空间位置就够了。

这样一对比,函数放在代码区节省了很多的资源,因此函数并不占用对象的大小。

至于对象放的位置,如果new的就在堆区,不然就在栈区。

二,空类的大小是多少?

看代码:

详解C++中对象的大小

我们会发现,空类的大小变成了1,正常不应该是0吗?

这样设置的原因是因为每一个对象实例化都需要空间,这里系统默认给了一个占位符,占1字节大小

三,如果类中有虚函数,类的大小是多少?

看图片:

详解C++中对象的大小

对比上面两种情况,空类大小为1,但是函数又不占用空间,为什么函数变为虚函数却变成了4呢?

因为当有虚函数时,编译器会给这个类加上虚函数指针 vptr(32位是4,64位是8)

此时类中有了指针,因此对象的大小就变为了4。

上面就是类中不同情况的大小。

关于详解C++中对象的大小就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


网站标题:详解C++中对象的大小-创新互联
网站地址:http://bjjierui.cn/article/csddjd.html

其他资讯