当前位置:网站首页>类和结构体
类和结构体
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的原因:
空类也可以实例化,类实例化出的每个对象都需要有不同的内存地址,为使每个对象在内存中的地址不同,所以在类中会加入一个隐含的字节。
边栏推荐
猜你喜欢
Altium designer software commonly used the most complete package library, including schematic library, PCB library and 3D model library
使用百度EasyDL实现智能垃圾箱
分布式事务产生的原因
买口罩(0-1背包)
Use of PlantUML plugin in idea
The JVM thread state
长沙学院2022暑假训练赛(一)六级阅读
常见的分布式事务解决方案
Flask failed to create database without error
【Oracle 11g】Redhat 6.5 安装 Oracle11g
随机推荐
The division principle summary within the collection
APP product source data interface (taobao, jingdong/spelling/suning/trill platform details a lot data analysis interface) code and docking tutorial
Transaction concluded
Fragments
MongDb的查询方式
【sqlite3】sqlite3.OperationalError: table addresses has 7 columns but 6 values were supplied
crc计算
Simple Factory Pattern
vlucas/phpdotenv phpdotenv获取变量内容偶尔出现返回false
VS2019 common shortcut keys
install flask
jvm线程状态
INSTALL_RPATH and BUILD_RPATH problem in CMake
Use of PlantUML plugin in idea
字节也开始缩招了...
单例 DCL(double check lock) 饱汉模式和饿汉模式
imageio读取.exr报错 ValueError: Could not find a backend to open `xxx.exr‘ with iomode `r`
【Shell】查找进程的pid并根据pid获取该进程所占用的端口号以及该进程在系统中所下达的指令名称
C语言的内置宏(定义日志宏)
95后,刚工作2-3年就年薪50W+ ,才发现打败我们的,从来不是年龄···