当前位置:网站首页>类和结构体
类和结构体
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的原因:
空类也可以实例化,类实例化出的每个对象都需要有不同的内存地址,为使每个对象在内存中的地址不同,所以在类中会加入一个隐含的字节。
边栏推荐
猜你喜欢
随机推荐
Mysql实操
MySQL高级特性之分布式(XA)事务的介绍
详解C语言中的wait()函数和waitpid()函数
学习小笔记---机器学习
报错:FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS重大开销和将disab补充道
排序第二节——选择排序(选择排序+堆排序)(两个视频讲解)
字节跳动面试题之镜像二叉树2020
P7阿里面试题2020.07 之滑动窗算法(阿里云面试)
搭载开源鸿蒙系统的嵌入式XM-RK3568工业互联方案
Zero shift of leetcode
Silently start over, the first page is also a new page
C language implements sequential stack and chain queue
2022.8.8DAY628
The singleton pattern
当酷雷曼VR直播遇上视频号,会摩擦出怎样的火花?
日期处理,字符串日期格式转换
MongDb的查询方式
The JVM thread state
长沙学院2022暑假训练赛(一)六级阅读
图论,二叉树,dfs,bfs,dp,最短路专题