内容正文:
YCF
(中职)编程语言基础------C++模块7教学课件
1
模块7类与对象
任务1类与对象
任务2构造函数
任务3静态成员
任务4友元函数和友元类
任务5模板
返回
任务1类与对象
7. 1 .1 类与对象的定义
C++的类是在结构体的基础上扩充而来的。结构体将具有某种联系的不同数据类型的成员组织在一起,而类是把各种不同类型的数据(称为数据成员)和对数据的操作(成员函数)组织在一起而形成的用户自定义的数据类型
1.类的定义
C++中,类定义包括类说明和类实现两大部分。说明部分提供了对该类所有数据成员和成员函数的描述;而实现部分则提供了所有成员函数的实现代码。
下一页
返回
任务1类与对象
类定义的一般形式为:
上一页
下一页
返回
任务1类与对象
<各成员函数的实现代码>
说明以下两点。
(1)class是定义类的关键字,类名由用户自己定义,但必须是C++的有效标识符,且一般首字母大写。
(2)类名后面用大括号括起来的部分是类说明部分,它声明了类的各个成员(数据成员和成员函数)。其中,用类的数据成员表示对象的属性,用成员函数表示对象的服务,即对象的行为和功能。这些成员分成3部分,即私有部分(private、公有部分(public)和保护部分( protected,并分别由private ,public和protected这3个关键字后跟冒号来指定。这3部分可以以任何顺序出现,且在一个类的定义中,这3部分并非必须同时出现。
上一页
下一页
返回
任务1类与对象
①如果数据成员或成员函数在类的private部分,那么在类之外是不能存取的,只有类中的成员函数才能存取private的数据成员和成员函数。
②在一个类的public部分说明的数据成员或成员函数可被程序中的任何函数或语句存取。public成员多为成员函数,用来提供一个与外界的接口,外界只有通过这个接口才可以实现对private成员的存取。
③在类的protected部分说明的数据成员和成员函数是不能在类之外存取的,只有类的成员函数及其子类(派生类)可以存取protected的成员。
④定义类时,当未指明成员是哪部分时,默认是属于private成员,但一般不要采用默认形式
上一页
下一页
返回
任务1类与对象
如:下例是描述图书的类定义。
上一页
下一页
返回
任务1类与对象
(3)要特别注意的是,在类的定义中,类的说明部分的右边大括号后面必须有一个“;”。
(4)根据类的定义,可看出:类是实现封装(Encapsulation)的工具。封装就是将类的成员按使用或存取的方式分类,从而有条件地限制对类成员的使用。它是通过public和pri-vate与成员函数实现的。private的成员构成类的内部状态,而public的成员则构成与外界通信的接口。通过public的成员函数来使用private的数据成员,从而在C++中实现封装
上一页
下一页
返回
任务1类与对象
例如,描述位置的Location类。
上一页
下一页
返回
任务1类与对象
其中,数据成员X和Y为私有数据成员,成员函数init() , GetX()和GetY()是公有成员
2.成员函数的定义
一个类所说明的数据成员描述了对象的内部数据结构,类中说明的成员函数则用来对数据成员的数据进行操作。例如,Location类的成员函数init()用来为该类的对象设置初始值,而当调用成员函数GetX()或GetY()时,它们分别返回一个对象的数据成员X或Y的值。在类中只对这些成员函数进行了函数说明,还必须在程序中定义这些成员函数的实现类的成员函数通常在类外定义,一般形式如下:
上一页
下一页
返回
任务1类与对象
返回类型类名::成员函数名(形参说明)
{
函数体;
}
双冒号::是域运算符(也称作域分辨符),它主要用于在类外对类成员函数的定义。它是用来表示某个成员函数属于哪个类的。即“类名::”用于表明其后的成员函数是在“类名”中说明的。在“函数体”中可以直接访问类中说明的所有成员,以描述该成员函数对它们所进行的操作。下面的例子说明了Location类的各成员函数的实现方法。
上一页
下一页
返回
任务1类与对象
【例7 -1 】 Location类的各成员函数的实现方法
上一页
下一页
返回
任务1类与对象
使用clan*定义的类称作用户定义的数据类型,类名是这个类型的名字。一个用户定义的类的类型和C++预定义的类型有相似之处,即都定义了值域(类中的数据成员取值范围)和操作(类中的成员函数名),对数据成员的访问应尽量通过这些成员函数来进行。
定义类时应注意以下事项。
(1)在类内不允许对所定义的数据成员进行初始化。因为类是一个数