C++语言程序设计(21世纪高等学校计算机专业实用规划教材)/好程序员成长丛书

C++语言程序设计(21世纪高等学校计算机专业实用规划教材)/好程序员成长丛书
作者: 编者:杨轩//程琳
出版社: 清华大学
原售价: 59.80
折扣价: 47.84
折扣购买: C++语言程序设计(21世纪高等学校计算机专业实用规划教材)/好程序员成长丛书
ISBN: 9787302514367

作者简介

内容简介

第3章类与对象 本章学习目标  理解类与对象  掌握构造函数与析构函数  理解友元函数与友元类  掌握静态成员、对象成员、常类型成员  掌握string类 在C++中把具有相同属性和行为的对象看成同一类,把属于某个类的实例称为某个类的对象。例如学生小千、小锋是两个不同的对象,它们有共同的属性,如学号、成绩等,也有相同的行为,如选课、显示成绩等,它们同属于一个“学生”类。类和对象是面向对象程序设计中使用的最基本的概念,下面进一步阐述类和对象的定义及使用。 3.1类 的 定 义 类是面向对象程序设计的核心,是进行封装和数据隐藏的工具。具体到代码上,类是逻辑上有关的函数及其数据的集合,它主要不是用于执行,而是提供所需要的资源。在使用一个类之前必须先定义类,定义一个类包含两个步骤: 一是说明类体中的成员; 二是实现类体中的函数。 类将数据表示和操作数据的函数组合在一起,下面来看一个用于描述平面上一点的类。 首先,考虑如何表示平面上一个点,可以用直角坐标系中的x轴和y轴上的两个数值分别表示平面上一个点的横坐标与纵坐标,如果想要在程序开始时指定这个点的坐标,可以通过定义一个函数来实现这种操作,而类就是将数据和操作封装在一起,如图3.1所示。 图3.1说明类体中的成员 在图3.1中,x0与y0就表示直角坐标系中的x轴和y轴上的两个数值,函数init()表示初始化一个点的坐标的操作,函数GetX()表示获取这个点的横坐标,函数GetY()表示获取这个点的纵坐标,通常将对类中数据操作的函数称为接口。因此,说明类体中的成员就是要说明它包含哪些成员,每个成员是什么类型。 从上面的示例中可以归纳出说明类体中成员的语法,其语法格式如下: class 类名 { public: 公有型数据和函数; protected: 保护型数据和函数; private: 私有型数据和函数; }; 其中,class是关键字,class之后是要定义的类名。类中的数据和函数都是类的成员,分别称为数据成员和成员函数。数据成员用来描述类状态等属性,由于数据成员常用变量来定义,因此有时又将这样的数据成员称为成员变量。成员函数用来对数据成员进行操作,又称方法。注意,类体中大括号“}”后面的分号“;”不能省略。 类中关键字public、protected和private说明了类中成员与类外之间的关系,称为访问权限,如表3.1所示。 表3.1访问权限及含义 访 问 权 限 public protected private 对本类 可见 可见 可见 对外部 可见 不可见 不可见 对子类 可见 可见 不可见 在说明类体中的成员时,也可以不定义成员的访问权限,如果不定义,则默认为private。另外,在类体中,public、protected和private出现的顺序与次数都是任意的。一般来说,比较好的格式是将公有成员都放在最前面,以突出用户接口,私有成员放在后面。 在C++中也可以定义有struct和union说明的类,只是很少使用,其也可以定义成员的访问权限,当成员的访问权限不定义时,默认是public的。 说明类体中的成员只是对其中的成员函数进行了函数声明,因此还必须在程序中定义这些成员函数的实现,具体示例如下: 返回类型类名::成员函数名(形式参数列表) { 函数体 } 其中,“::”称为作用域运算符,“类名::”表示其后的成员函数是在类体中被声明过的。在成员函数体内可以对类中的任何成员直接使用,不论是公有的还是私有的、保护的,也可以调用系统提供的库函数,以及其他已定义的一些普通函数。 例如,定义一个用于描述平面上一点的类,具体示例如下: class Point { public: void init(int a, int b); int GetX(); int GetY() { return y; } private: int x, y; }; void Point::init(int a, int b) { x = a; y = b; } inline int Point::GetX() //内联函数 { return x; } 在上例中,简单的成员函数经常定义成内联函数,定义的方法有两种: 一种是在说明类体时,直接在类体内部定义函数体,系统将自动把这个函数当成内联函数; 另一种是在类体外通过inline关键字定义。 3.2对象 在面向对象程序设计方法中,类是一种封装数据与函数的形式,但在程序中,类是一种复杂的构造数据类型,可以用来定义变量,这个变量称为具有类属性的对象,是类的一个实例,因此在面向对象程序中,类是程序设计的核心,而对象是程序的实体。 3.2.1对象的创建 类是用户定义的一种数据类型,因此程序员可以使用这个类型在程序中定义变量,这种具有类类型的变量就称为对象,具体示例如下: 本书取材广泛,内容新颖,以零基础讲解为宗旨,摒弃了枯燥乏味、层次结构混乱等缺陷,知识系统全面