C++中 结构体和类的异同
2024-10-12 05:19:17
在C++中,结构体是一种特殊形态的类。
结构体和类的唯一区别就是: 结构体和类具有不同的默认访问控制属性。
类中,对于未指定访问控制属性的成员,其访问控制属性为私有类型(private)
结构体中,对于未指定任何访问控制属性的成员,其访问控制属性为公有类型(public)
C++中,不使用结构体丝毫不会影响程序的表达能力。C++之所以要引入结构体,是为了保持和C程序的兼容性。
但有时仍会在C++中使用结构体,是因为,可以使用结构体将不同类型数据组成整体,方便于保存数据。(若用类来保存,因类中成员默认为私有,还要为每个数据成员特定函数来读取和改写各个属性,比较麻烦。)
C语言中结构体不允许定义函数成员,且没有访问控制属性的概念。
C++为C语言中的结构体引入了成员函数、访问控制权限、继承、包含多态等面向对象特性。
C++在struct之外引入了class关键字,但为了保持与C程序的兼容,C++保留了struct关键字,并规定结构体默认访问控制权限为公有类型。
另外,C语言中,空结构体的大小为0,而C++中空结构体(属于空类)的大小为1。
C++中空类的大小为1的原因:
空类也可以实例化,类实例化出的每个对象都需要有不同的内存地址,为使每个对象在内存中的地址不同,所以在类中会加入一个隐含的字节。
最新文章
- 浅谈python中得import xxx,from xxx import xxx, from xxx import *
- python 入门学习之环境搭载
- javscript闭包的准备工作 -- 作用域与作用域链
- SQL Server 查询表的记录数(3种方法,推荐第一种)
- 找出linux服务器IO占用高的程序
- 常用按键ASCII码
- Android Activity界面切换添加动画特效
- Aggregating local features for Image Retrieval
- Lua编译
- Mac OSX的开机启动配置
- 很久没来这里,今天的评测java怪东西,左右Date类和时间戳转换
- javascript入门篇(五)
- FFmpeg 结构体学习(六): AVCodecContext 分析
- POJ 3074 Sudoku(算竞进阶习题)
- thymeleaf:日常使用总结
- linux的python版本升级
- 《DSP using MATLAB》Problem 6.22
- [翻译] ObjectAL for iPhone and Mac(持续更新)
- Android App 注射&;&;Drozer Use
- 浅谈 Sql Server 游标