基础面试题: C++中结构和类的区别
admin
2024-05-23 18:46:58

面试题:1、C++中类和结构的区别是什么?

               2、为什么C++的空类占用1个Byte的空间?


目录

前言         

1、C和C++中结构体的不同 

2、C++中结构和类的区别


前言         

        在C++中结构和类都是数据的集合,体现了封装性,结构是在C语言的延续产物,类是在面向对象语言后出现的产物,通常我们认为类(class)结构(struct)的扩展。类和结构往往有许多相同的地方,也有许多不同的之处,只有将它们了解清楚,才能明确什么时候我们应该用结构,什么时候我们用类。

C++ 中,结构可以有成员变量、方法、也可以有构造函数,同样也可以被继承,可以从接口派生。但是对于C与C++语言中同样是结构,它们也有不同之处

1、C和C++中结构体的不同 

        1)C语言中,结构(struct)不能为空,C++中可以。
             在C语言中,结构(struct)是不能为空的,必须有成员数据,而在C++中可以是空的。

        2)C语言中,结构体不能定义函数,C++中可以。

              当然,在C++我们应尽量不要在结构体中定义函数体,应当竟可能延续结构体是数据的集

               合这一基本理念。

        3)意义和用法不同

             因为在C中,结构只是数据的集合,所以构造函数、继承、public限定等特性,在C的结构

             中不存在,但是在C++中这些特性,结构体都有。


2、C++中结构和类的区别

       1)成员默认访问权限的不同

             结构默认访问权限是public,而类成员默认访问是private

        2)默认结构所占空间不同

            空的结构不占用空间,空的类占用一个字节的空间。

             为什么类占用一个byte的空间?因为了实现每个实例在内存中都有一个独一无二的地址,

             编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二

             的地址。

        3)类型不同

              结构是值类型,值类型存储在栈中,类是引用类型,一般存储在堆中

        4)结构和类型的效率不同

              结构因为存储在栈中、类对象存储在堆中,结构比类的效率高些。但是结构一般存储小数

·             据,类通常存储比较大的数据内容

        5)限制

              struct只能添加带参的构造函数,不能使用abstract和protected等修饰符,不能初始化实例

              字段


相关内容

热门资讯

奥地利小镇邂逅农民思想家多伊布... 旅游奥地利期间,每天与同行的徐静波教授晨起一同散步,有时沿着多瑙河,有时在维也纳的森林间,但给我印象...
读懂济南|从“一阵风”到“长红... 齐鲁晚报·齐鲁壹点 王贝艺大明湖畔的狂欢还未收尾,五龙潭的泼水狂欢又已开场;广智里的咖啡香还没散尽,...
黄河壶口瀑布水量大增 形成壮美...   9月9日,受降雨天气影响,位于晋陕峡谷的黄河壶口瀑布水量大增,主副瀑布连成一片,形成壮美瀑布群景...
“请3休13”点燃中秋国庆国内... 财联社9月10日讯(记者 胡皓琼)中秋前一日火车票开售,中秋国庆国内游预订提速。财联社记者从OTA平...
微言|游客暴增却带不来利润?“... 中秋、国庆假期将至,很多地方将迎来旅游旺季。然而,一些地方旅游人次创新高,民宿经营者却普遍反映利润摊...