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

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

              字段


相关内容

热门资讯

原创 这... 标题:探索传统美食的现代复兴 在历史的长河中,有些食物曾一度被遗忘,它们的故事被尘封在岁月的角落。...
原创 不... 标题:不会做饭的老婆,把饺子馅玩成这样,我不吃了求你别浪费了 在这个快节奏的时代,我们总是在追求效...
原创 这... 在探索美食的海洋中,有一种鱼以其独特的名字和细腻的口感而闻名。它不是那种常见的海味,却因其肉质细嫩、...
原创 4... 标题:40年饭店大厨酒后吐真言:这样做出来的饺子最好吃,新手也能学会 在这个快节奏的时代,我们总是...
原创 一... 标题:一口平底锅就能搞定的美食,香脆蛋酥卷,咬一口酥到骨子里! 在这个快节奏的时代,我们总是在寻找...
原创 五... 五花肉,这道传统美食的主角,以其独特的风味和丰富的层次感,在众多烹饪手法中总能脱颖而出。今天,我将与...
罗永浩筹备九年的泡面1小时销售... 8月21日晚7时,产品经理罗永浩与搭档王拓准时出现在康师傅官方抖音直播间,宣布筹备九年的“特别特鲜泡...
坛友带饭几个月终于崩溃了!求推... 带饭上班的你们 有没有带饭带到“瓶颈期”的? 一坛友称自己带饭几个月,只会做素菜 夏天吃着寡淡没胃口...
原创 小... 在这个阳光灿烂的周六,贝克汉姆一家在圣特罗佩的海面上享受了一场海上度假的奢华时光,尽管喜悦的气氛中却...
老两口早餐,蒸蒸煮煮全搞定,营... 最近网上有个词很火——“邪修”,突然觉得我也算半个“邪修”了,因为常常想偷懒,想寻找最简单的方式来做...