C++语言程序设计
上QQ阅读APP看书,第一时间看更新

3.1 类的定义

类是面向对象程序设计的核心,是进行封装和数据隐藏的工具。具体到代码上,类是逻辑上有关的函数及其数据的集合,它主要不是用于执行,而是提供所需要的资源。在使用一个类之前必须先定义类,定义一个类包含两个步骤:一是说明类体中的成员;二是实现类体中的函数。

类将数据表示和操作数据的函数组合在一起,下面来看一个用于描述平面上一点的类。

首先,考虑如何表示平面上一个点,可以用直角坐标系中的x轴和y轴上的两个数值分别表示平面上一个点的横坐标与纵坐标,如果想要在程序开始时指定这个点的坐标,可以通过定义一个函数来实现这种操作,而类就是将数据和操作封装在一起,如图3.1所示。

在图3.1中,x0y0就表示直角坐标系中的x轴和y轴上的两个数值,函数init()表示初始化一个点的坐标的操作,函数GetX()表示获取这个点的横坐标,函数GetY()表示获取这个点的纵坐标,通常将对类中数据操作的函数称为接口。因此,说明类体中的成员就是要说明它包含哪些成员,每个成员是什么类型。

图3.1 说明类体中的成员

从上面的示例中可以归纳出说明类体中成员的语法,其语法格式如下:

其中,class是关键字,class之后是要定义的类名。类中的数据和函数都是类的成员,分别称为数据成员和成员函数。数据成员用来描述类状态等属性,由于数据成员常用变量来定义,因此有时又将这样的数据成员称为成员变量。成员函数用来对数据成员进行操作,又称方法。注意,类体中大括号“}”后面的分号“;”不能省略。

类中关键字public、protected和private说明了类中成员与类外之间的关系,称为访问权限,如表3.1所示。

表3.1 访问权限及含义

在说明类体中的成员时,也可以不定义成员的访问权限,如果不定义,则默认为private。另外,在类体中,public、protected和private出现的顺序与次数都是任意的。一般来说,比较好的格式是将公有成员都放在最前面,以突出用户接口,私有成员放在后面。

在C++中也可以定义有struct和union说明的类,只是很少使用,其也可以定义成员的访问权限,当成员的访问权限不定义时,默认是public的。

说明类体中的成员只是对其中的成员函数进行了函数声明,因此还必须在程序中定义这些成员函数的实现,具体示例如下:

其中,“::”称为作用域运算符,“类名::”表示其后的成员函数是在类体中被声明过的。在成员函数体内可以对类中的任何成员直接使用,不论是公有的还是私有的、保护的,也可以调用系统提供的库函数,以及其他已定义的一些普通函数。

例如,定义一个用于描述平面上一点的类,具体示例如下:

在上例中,简单的成员函数经常定义成内联函数,定义的方法有两种:一种是在说明类体时,直接在类体内部定义函数体,系统将自动把这个函数当成内联函数;另一种是在类体外通过inline关键字定义。