基础面试题: 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等修饰符,不能初始化实例

              字段


相关内容

热门资讯

“六一”亲子游热度飙升,成年子... “六一”国际儿童节即将来临,不少家庭游客已提前预订亲子旅游产品,根据同程旅行、去哪儿、途牛等OTA(...
柯尔鸭花车、科学魔法秀、卡皮巴... 华声在线5月28日讯(全媒体记者 曾冠霖)六一儿童节临近,长沙亲子游市场持续升温。5月28日,记者从...
“六一”儿童节去哪玩?广西各大... “六一”国际儿童节临近,广西各大景区、场馆推出门票优惠与丰富的亲子活动,涵盖山水休闲、萌宠互动、非遗...
旅行社责任险报价:一年几千元,... 旅行社问责任险报价时,很多人第一反应是:"一年多少钱?最低能做到多少?"但在保游网看来,旅行社责任险...