大家好
欢迎回来继续学习
C++语言程序设计
这一节我们来学习结构体
结构体这种数据结构
是在C语言中就有的
C++呢也继承了结构体
这种数据结构
那么实际上呢
在C++中
它的结构体已经不是
当初C语言中的那个结构体了
C++的结构体是一种特殊的类
那么它跟类的差别在哪儿呢
类里面的成员
默认情况下
如果你定义在类体的最开头
你可以不写访问空间属性
它默认就是私有的
而结构体里面的成员
如果你定义在结构体的开头
并且不写访问控制属性
它默认是公有的
什么时候我们会要用结构体呢
既然它就是一种特殊的类
那我们用类不就可以了吗
干吗还用结构体呢
如果我们需要表示
一组集成在一起的数据
而基本上没有太多的函数
去表示它的功能
没有太多的操作
这个时候呢
我们就可以使用结构体
或者有的时候
我们需要把这一组数据
集成在一起
构成一个新的类型
但是又希望外部
能够比较方便地访问这些数据
就把这些数据定义成公有的
希望这样的话
也可以选择结构体
但是结构体呢
在C++中用得并不多
很多时候是为了跟C语言兼容
来使用结构体的
现在我们来看怎么样定义
和初始化结构体
那结构体的定义的语法形式呢
看起来跟类是很像的
只不过它是用struct关键字
而不是class
后面跟的是结构体的名字
然后紧跟着开始大括号之后
定义的成员
就默认是公有成员
不用写public
如果你想把成员定义成
保护型的 私有型的也可以
那么就要写成protected
private就可以了
结构体的成员呢
既可以是数据成员
也可以是函数成员
在以前C语言中的结构体中呢
是只能定义数据
不能定义函数成员的
在C++中我们说了
结构体其实就是一种特殊的类
跟类一样
它也可以定义函数成员
如果一个结构体的全部数据成员
都是公有成员
并且没有用户定义的构造函数
没有基类和虚函数
基类和虚函数
我们在后续章节中会介绍
那么这种情况下
这个结构体的变量
就可以像这样来进行初始化
下面我们来看一个结构体的例子
好 这是一个使用结构体的例子
我们看在这儿定义了个
学生信息结构体
它包括学号 姓名 性别
和年龄
那我们知道
在结构体中呢
如果你什么访问控制属性都不写
它默认的就是public属性
现在我们看在主函数中
使用这个结构体怎么使用
因为它只有数据
没有任何其他的成员函数
所以我们可以用这样的
大括号里面列出初始值的方式
对这个结构体
变量进行初始化
对结构体对象进行初始化
然后使用的时候呢
我们可以直接用结构体
对象名.成员名的方式
访问它的所有成员
因为它都是公有成员
所以在外部都是可以访问的