当前位置:网站首页>类和结构体
类和结构体
2022-08-09 06:59:00 【想做后端的前端】
C++中类和结构体
在C++中,结构体是一种特殊形态的类。
结构体和类的唯一区别就是: 结构体和类具有不同的默认访问控制属性。
- 类中,对于未指定访问控制属性的成员,其访问控制属性为私有类型(private)
- 结构体中,对于未指定任何访问控制属性的成员,其访问控制属性为公有类型(public)
C++中,不使用结构体丝毫不会影响程序的表达能力。C++之所以要引入结构体,是为了保持和C程序的兼容性。
但有时仍会在C++中使用结构体,是因为,可以使用结构体将不同类型数据组成整体,方便于保存数据。(若用类来保存,因类中成员默认为私有,还要为每个数据成员特定函数来读取和改写各个属性,比较麻烦。)
C中结构体
C语言中结构体不允许定义函数成员,且没有访问控制属性的概念。
C++为C语言中的结构体引入了成员函数、访问控制权限、继承、包含多态等面向对象特性。
C++在struct之外引入了class关键字,但为了保持与C程序的兼容,C++保留了struct关键字,并规定结构体默认访问控制权限为公有类型。
另外,C语言中,空结构体的大小为0,而C++中空结构体(属于空类)的大小为1。
C++中空类的大小为1的原因:
空类也可以实例化,类实例化出的每个对象都需要有不同的内存地址,为使每个对象在内存中的地址不同,所以在类中会加入一个隐含的字节。
边栏推荐
猜你喜欢

The working principle of the transformer (illustration, schematic explanation, understand at a glance)

2022-08-08: Given an array arr, it represents the height of the missiles that will appear in order from morning to night.When the cannon shoots missiles, once the cannon is set to shoot at a certain h

分布式理论

金九银十即将到来,求职套路多,面试指南我来分享~

The JVM thread state

C语言的内置宏(定义日志宏)

INSTALL_RPATH and BUILD_RPATH problem in CMake

高项 03 项目立项管理

学习小笔记---机器学习

Leetcode 70 stairs issues (Fibonacci number)
随机推荐
高项 04 项目变更管理
分布式理论
【转载】Deep Learning(深度学习)学习笔记整理
Fragments
高项 03 项目立项管理
crc calculation
2022 年全球十大最佳自动化测试工具
排序第二节——选择排序(选择排序+堆排序)(两个视频讲解)
P7阿里面试题2020.07 之滑动窗算法(阿里云面试)
2022年7月小结
C language implements sequential stack and chain queue
P6阿里机试题之2020 斐波那契数
如何 认识与学习BASH
Service
MVN 中配置flyway mysq
【烂笔头】各厂商手机手动抓log
【Docker】Docker安装MySQL
按图搜索1688商品接口(item_search_img-按图搜索1688商品(拍立淘接口)代码对接教程
MongDb的查询方式
使用百度EasyDL实现智能垃圾箱