首页 理论教育 零基础C++从入门到精通:数据抽象的实现及运行结果

零基础C++从入门到精通:数据抽象的实现及运行结果

时间:2023-08-20 理论教育 版权反馈
【摘要】:动手写8.1.1动手写8.1.1展示了用变量名来联系相关的变量。动手写8.1.2动手写8.1.2用几个数组实现了这一功能,运行结果如图8.1.2所示:图8.1.2数组实现这个方法简化了多个学生的情况,我们可以用几个数组分别表示学生的每种属性。动手写8.1.3动手写8.1.3展示了结构体的使用,其运行结果与动手写8.1.2的相同。像这样将现实中的事物的关键信息抽取出来的过程就是数据抽象。

零基础C++从入门到精通:数据抽象的实现及运行结果

之前我们介绍了许多基本数据类型,可以表示常用的数字与文字信息,也介绍了可以将相同数据类型串在一起数组。很明显,就表示现实中的事物而言,这些类型是远远不够的。假设我们要在程序中记录一个学生的学号、名字、班级等信息,我们应该怎么做呢?

动手写8.1.1

动手写8.1.1展示了用变量名来联系相关的变量。运行结果如图8.1.1所示:

图8.1.1 相关联的变量名

虽然这样的做法直截了当,但是如果在需要多个学生信息的情况下,我们就不得不把变量名修改成student1ID,这样会非常不灵活,而且程序中的变量会相当多。

动手写8.1.2

(www.xing528.com)

动手写8.1.2用几个数组实现了这一功能,运行结果如图8.1.2所示:

图8.1.2 数组实现

这个方法简化了多个学生的情况,我们可以用几个数组分别表示学生的每种属性。但是当属性增加的时候,我们还是要管理这些数组,而且也要注意每个数组的大小需保持一致(这里不需要担心学生数量动态增长的情况,只要简单地把数组改成vector就行了)。读者可能会想到可以使用二维数组,并用第二维来表示每种属性。但我们知道,C++的数组只能放相同类型的元素,如果只有学号和班级,我们可以使用存放数字的数组,但是名字就不行了。所以这个时候就需要有一种可以存储复合类型数据的数组,这种数组就是结构体(Struct)。我们先来看看结构体是怎么使用的。

动手写8.1.3

动手写8.1.3展示了结构体的使用,其运行结果与动手写8.1.2的相同。我们在这里使用struct关键字定义了一个结构体,在其中放入任何数据类型的变量,就相当于一下子定义了好几个变量。

我们使用点号(.)来获取结构体中的成员,这样如果想定义几个学生,只需要一个包含Student结构体的数组就可以了,而且无须担心不同数组之间大小是否同步的问题。而在添加属性的时候,我们也可以简单地在数组的定义中添加一个成员。像这样将现实中的事物的关键信息抽取出来的过程就是数据抽象。在这里我们只抽取了属性,而事物还有各式各样的行为和相互之间的联系,这些我们会在后面的内容中一一讲述。

在定义了Student结构体后,我们多了一种新的数据类型可以操作,它可以当作函数的参数和返回值,或指针指向的对象。而在这些操作中我们都不需要关心这个结构体中有什么,只需要操作这个抽象的数据类型,这也体现了下一小节中封装的概念。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈