工信版(中职)编程语言基础------C++模块7教学课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《工信版(中职)编程语言基础------C++模块7教学课件.ppt》由会员分享,可在线阅读,更多相关《工信版(中职)编程语言基础------C++模块7教学课件.ppt(139页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、YCF(中职)编程语言基础-C+模块7教学课件模块模块7类与对象类与对象任务任务1类与对象类与对象任务任务2构造函数构造函数任务任务3静态成员静态成员任务任务4友元函数和友元类友元函数和友元类任务任务5模板模板返回任务任务1类与对象类与对象7.1.1 类与对象的定义类与对象的定义 C+C+的类是在结构体的基础上扩充而来的。结构体将具有某种联系的的类是在结构体的基础上扩充而来的。结构体将具有某种联系的的类是在结构体的基础上扩充而来的。结构体将具有某种联系的的类是在结构体的基础上扩充而来的。结构体将具有某种联系的不同数据类型的成员组织在一起,而类是把各种不同类型的数据不同数据类型的成员组织在一起,
2、而类是把各种不同类型的数据不同数据类型的成员组织在一起,而类是把各种不同类型的数据不同数据类型的成员组织在一起,而类是把各种不同类型的数据(称为称为称为称为数据成员数据成员数据成员数据成员)和对数据的操作和对数据的操作和对数据的操作和对数据的操作(成员函数成员函数成员函数成员函数)组织在一起而形成的用户自定义组织在一起而形成的用户自定义组织在一起而形成的用户自定义组织在一起而形成的用户自定义的数据类型的数据类型的数据类型的数据类型 1.1.类的定义类的定义类的定义类的定义 C+C+中,类定义包括类说明和类实现两大部分。说明部分提供了对中,类定义包括类说明和类实现两大部分。说明部分提供了对中,类
3、定义包括类说明和类实现两大部分。说明部分提供了对中,类定义包括类说明和类实现两大部分。说明部分提供了对该类所有数据成员和成员函数的描述该类所有数据成员和成员函数的描述该类所有数据成员和成员函数的描述该类所有数据成员和成员函数的描述;而实现部分则提供了所有成员函而实现部分则提供了所有成员函而实现部分则提供了所有成员函而实现部分则提供了所有成员函数的实现代码。数的实现代码。数的实现代码。数的实现代码。下一页返回任务任务1类与对象类与对象 类定义的一般形式为类定义的一般形式为类定义的一般形式为类定义的一般形式为:上一页 下一页返回任务任务1类与对象类与对象 说明以下两点。说明以下两点。说明以下两点。
4、说明以下两点。(1)class(1)class是定义类的关键字,类名由用户自己定义,但必须是是定义类的关键字,类名由用户自己定义,但必须是是定义类的关键字,类名由用户自己定义,但必须是是定义类的关键字,类名由用户自己定义,但必须是C+C+的有的有的有的有效标识符,且一般首字母大写。效标识符,且一般首字母大写。效标识符,且一般首字母大写。效标识符,且一般首字母大写。(2)(2)类名后面用大括号括起来的部分是类说明部分,它声明了类的各类名后面用大括号括起来的部分是类说明部分,它声明了类的各类名后面用大括号括起来的部分是类说明部分,它声明了类的各类名后面用大括号括起来的部分是类说明部分,它声明了类的
5、各个成员个成员个成员个成员(数据成员和成员函数数据成员和成员函数数据成员和成员函数数据成员和成员函数)。其中,用类的数据成员表示对象的属。其中,用类的数据成员表示对象的属。其中,用类的数据成员表示对象的属。其中,用类的数据成员表示对象的属性,用成员函数表示对象的服务,即对象的行为和功能。这些成员分性,用成员函数表示对象的服务,即对象的行为和功能。这些成员分性,用成员函数表示对象的服务,即对象的行为和功能。这些成员分性,用成员函数表示对象的服务,即对象的行为和功能。这些成员分成成成成3 3部分,即私有部分部分,即私有部分部分,即私有部分部分,即私有部分(private(private、公有部分、
6、公有部分、公有部分、公有部分(public)(public)和保护部分和保护部分和保护部分和保护部分(protectedprotected,并分别由,并分别由,并分别由,并分别由private,publicprivate,public和和和和protectedprotected这这这这3 3个关键字后跟冒号个关键字后跟冒号个关键字后跟冒号个关键字后跟冒号来指定。这来指定。这来指定。这来指定。这3 3部分可以以任何顺序出现,且在一个类的定义中,这部分可以以任何顺序出现,且在一个类的定义中,这部分可以以任何顺序出现,且在一个类的定义中,这部分可以以任何顺序出现,且在一个类的定义中,这3 3部部部部
7、分并非必须同时出现。分并非必须同时出现。分并非必须同时出现。分并非必须同时出现。上一页 下一页返回任务任务1类与对象类与对象 如果数据成员或成员函数在类的如果数据成员或成员函数在类的如果数据成员或成员函数在类的如果数据成员或成员函数在类的privateprivate部分,那么在类之外是不能部分,那么在类之外是不能部分,那么在类之外是不能部分,那么在类之外是不能存取的,只有类中的成员函数才能存取存取的,只有类中的成员函数才能存取存取的,只有类中的成员函数才能存取存取的,只有类中的成员函数才能存取privateprivate的数据成员和成员函数。的数据成员和成员函数。的数据成员和成员函数。的数据成
8、员和成员函数。在一个类的在一个类的在一个类的在一个类的publicpublic部分说明的数据成员或成员函数可被程序中的部分说明的数据成员或成员函数可被程序中的部分说明的数据成员或成员函数可被程序中的部分说明的数据成员或成员函数可被程序中的任何函数或语句存取。任何函数或语句存取。任何函数或语句存取。任何函数或语句存取。publicpublic成员多为成员函数,用来提供一个与外成员多为成员函数,用来提供一个与外成员多为成员函数,用来提供一个与外成员多为成员函数,用来提供一个与外界的接口,外界只有通过这个接口才可以实现对界的接口,外界只有通过这个接口才可以实现对界的接口,外界只有通过这个接口才可以实
9、现对界的接口,外界只有通过这个接口才可以实现对privateprivate成员的存取。成员的存取。成员的存取。成员的存取。在类的在类的在类的在类的protectedprotected部分说明的数据成员和成员函数是不能在类之外部分说明的数据成员和成员函数是不能在类之外部分说明的数据成员和成员函数是不能在类之外部分说明的数据成员和成员函数是不能在类之外存取的,只有类的成员函数及其子类存取的,只有类的成员函数及其子类存取的,只有类的成员函数及其子类存取的,只有类的成员函数及其子类(派生类派生类派生类派生类)可以存取可以存取可以存取可以存取protectedprotected的成的成的成的成员。员。员
10、。员。定义类时,当未指明成员是哪部分时,默认是属于定义类时,当未指明成员是哪部分时,默认是属于定义类时,当未指明成员是哪部分时,默认是属于定义类时,当未指明成员是哪部分时,默认是属于privateprivate成员,成员,成员,成员,但一般不要采用默认形式但一般不要采用默认形式但一般不要采用默认形式但一般不要采用默认形式上一页 下一页返回任务任务1类与对象类与对象如如如如:下例是描述图书的类定义。下例是描述图书的类定义。下例是描述图书的类定义。下例是描述图书的类定义。上一页 下一页返回任务任务1类与对象类与对象 (3)(3)要特别注意的是,在类的定义中,类的说明部分的右边大括号后要特别注意的是
11、,在类的定义中,类的说明部分的右边大括号后要特别注意的是,在类的定义中,类的说明部分的右边大括号后要特别注意的是,在类的定义中,类的说明部分的右边大括号后面必须有一个面必须有一个面必须有一个面必须有一个“;”;”。(4)(4)根据类的定义,可看出根据类的定义,可看出根据类的定义,可看出根据类的定义,可看出:类是实现封装类是实现封装类是实现封装类是实现封装(Encapsulation)(Encapsulation)的工具。封的工具。封的工具。封的工具。封装就是将类的成员按使用或存取的方式分类,从而有条件地限制对类装就是将类的成员按使用或存取的方式分类,从而有条件地限制对类装就是将类的成员按使用或
12、存取的方式分类,从而有条件地限制对类装就是将类的成员按使用或存取的方式分类,从而有条件地限制对类成员的使用。它是通过成员的使用。它是通过成员的使用。它是通过成员的使用。它是通过publicpublic和和和和pri-vatepri-vate与成员函数实现的。与成员函数实现的。与成员函数实现的。与成员函数实现的。privateprivate的的的的成员构成类的内部状态,而成员构成类的内部状态,而成员构成类的内部状态,而成员构成类的内部状态,而publicpublic的成员则构成与外界通信的接口。的成员则构成与外界通信的接口。的成员则构成与外界通信的接口。的成员则构成与外界通信的接口。通过通过通过
13、通过publicpublic的成员函数来使用的成员函数来使用的成员函数来使用的成员函数来使用privateprivate的数据成员,从而在的数据成员,从而在的数据成员,从而在的数据成员,从而在C+C+中实现中实现中实现中实现封装封装封装封装上一页 下一页返回任务任务1类与对象类与对象例如,描述位置的例如,描述位置的例如,描述位置的例如,描述位置的LocationLocation类。类。类。类。上一页 下一页返回任务任务1类与对象类与对象其中,数据成员其中,数据成员其中,数据成员其中,数据成员X X和和和和Y Y为私有数据成员,成员函数为私有数据成员,成员函数为私有数据成员,成员函数为私有数据成
14、员,成员函数init(),GetX()init(),GetX()和和和和GetYGetY()()是公有成员是公有成员是公有成员是公有成员 2.2.成员函数的定义成员函数的定义成员函数的定义成员函数的定义 一个类所说明的数据成员描述了对象的内部数据结构,类中说明的一个类所说明的数据成员描述了对象的内部数据结构,类中说明的一个类所说明的数据成员描述了对象的内部数据结构,类中说明的一个类所说明的数据成员描述了对象的内部数据结构,类中说明的成员函数则用来对数据成员的数据进行操作。例如,成员函数则用来对数据成员的数据进行操作。例如,成员函数则用来对数据成员的数据进行操作。例如,成员函数则用来对数据成员的
15、数据进行操作。例如,LocationLocation类的成类的成类的成类的成员函数员函数员函数员函数init()init()用来为该类的对象设置初始值,而当调用成员函数用来为该类的对象设置初始值,而当调用成员函数用来为该类的对象设置初始值,而当调用成员函数用来为该类的对象设置初始值,而当调用成员函数GetX()GetX()或或或或GetY()GetY()时,它们分别返回一个对象的数据成员时,它们分别返回一个对象的数据成员时,它们分别返回一个对象的数据成员时,它们分别返回一个对象的数据成员X X或或或或Y Y的值。在类中的值。在类中的值。在类中的值。在类中只对这些成员函数进行了函数说明,还必须在
16、程序中定义这些成员函只对这些成员函数进行了函数说明,还必须在程序中定义这些成员函只对这些成员函数进行了函数说明,还必须在程序中定义这些成员函只对这些成员函数进行了函数说明,还必须在程序中定义这些成员函数的实现类的成员函数通常在类外定义,一般形式如下数的实现类的成员函数通常在类外定义,一般形式如下数的实现类的成员函数通常在类外定义,一般形式如下数的实现类的成员函数通常在类外定义,一般形式如下:上一页 下一页返回任务任务1类与对象类与对象返回类型类名返回类型类名返回类型类名返回类型类名:成员函数名成员函数名成员函数名成员函数名(形参说明形参说明形参说明形参说明)函数体函数体函数体函数体;双冒号双冒
17、号双冒号双冒号:是域运算符是域运算符是域运算符是域运算符(也称作域分辨符也称作域分辨符也称作域分辨符也称作域分辨符),它主要用于在类外对类成员,它主要用于在类外对类成员,它主要用于在类外对类成员,它主要用于在类外对类成员函数的定义。它是用来表示某个成员函数属于哪个类的。即函数的定义。它是用来表示某个成员函数属于哪个类的。即函数的定义。它是用来表示某个成员函数属于哪个类的。即函数的定义。它是用来表示某个成员函数属于哪个类的。即“类名类名类名类名:”:”用于表明其后的成员函数是在用于表明其后的成员函数是在用于表明其后的成员函数是在用于表明其后的成员函数是在“类名类名类名类名”中说明的。在中说明的。
18、在中说明的。在中说明的。在“函数体函数体函数体函数体”中可中可中可中可以直接访问类中说明的所有成员,以描述该成员函数对它们所进行的以直接访问类中说明的所有成员,以描述该成员函数对它们所进行的以直接访问类中说明的所有成员,以描述该成员函数对它们所进行的以直接访问类中说明的所有成员,以描述该成员函数对它们所进行的操作。下面的例子说明了操作。下面的例子说明了操作。下面的例子说明了操作。下面的例子说明了LocationLocation类的各成员函数的实现方法。类的各成员函数的实现方法。类的各成员函数的实现方法。类的各成员函数的实现方法。上一页 下一页返回任务任务1类与对象类与对象【例例例例7-1 7-
19、1】Location Location类的各成员函数的实现方法类的各成员函数的实现方法类的各成员函数的实现方法类的各成员函数的实现方法上一页 下一页返回任务任务1类与对象类与对象 使用使用使用使用clan*clan*定义的类称作用户定义的数据类型,类名是这个类型的名定义的类称作用户定义的数据类型,类名是这个类型的名定义的类称作用户定义的数据类型,类名是这个类型的名定义的类称作用户定义的数据类型,类名是这个类型的名字。一个用户定义的类的类型和字。一个用户定义的类的类型和字。一个用户定义的类的类型和字。一个用户定义的类的类型和C+C+预定义的类型有相似之处,即都预定义的类型有相似之处,即都预定义的
20、类型有相似之处,即都预定义的类型有相似之处,即都定义了值域定义了值域定义了值域定义了值域(类中的数据成员取值范围类中的数据成员取值范围类中的数据成员取值范围类中的数据成员取值范围)和操作和操作和操作和操作(类中的成员函数名类中的成员函数名类中的成员函数名类中的成员函数名),对,对,对,对数据成员的访问应尽量通过这些成员函数来进行。数据成员的访问应尽量通过这些成员函数来进行。数据成员的访问应尽量通过这些成员函数来进行。数据成员的访问应尽量通过这些成员函数来进行。定义类时应注意以下事项。定义类时应注意以下事项。定义类时应注意以下事项。定义类时应注意以下事项。(1)(1)在类内不允许对所定义的数据成
21、员进行初始化。因为类是一个数在类内不允许对所定义的数据成员进行初始化。因为类是一个数在类内不允许对所定义的数据成员进行初始化。因为类是一个数在类内不允许对所定义的数据成员进行初始化。因为类是一个数据类型,其定义以后并没有存储空间,因此,数据成员就不能进行初据类型,其定义以后并没有存储空间,因此,数据成员就不能进行初据类型,其定义以后并没有存储空间,因此,数据成员就不能进行初据类型,其定义以后并没有存储空间,因此,数据成员就不能进行初始化始化始化始化(但静态的数据成员可以在类外进行初始化但静态的数据成员可以在类外进行初始化但静态的数据成员可以在类外进行初始化但静态的数据成员可以在类外进行初始化)
22、。上一页 下一页返回任务任务1类与对象类与对象 (2)(2)类中的数据成员的类型可以是任意的,包括整型、浮点型、字符类中的数据成员的类型可以是任意的,包括整型、浮点型、字符类中的数据成员的类型可以是任意的,包括整型、浮点型、字符类中的数据成员的类型可以是任意的,包括整型、浮点型、字符型、数组、指针和引用等。也可以是对象,即另一个类的对象,可以型、数组、指针和引用等。也可以是对象,即另一个类的对象,可以型、数组、指针和引用等。也可以是对象,即另一个类的对象,可以型、数组、指针和引用等。也可以是对象,即另一个类的对象,可以作为该类的成员,但自身类的对象是不可以的。作为该类的成员,但自身类的对象是不
23、可以的。作为该类的成员,但自身类的对象是不可以的。作为该类的成员,但自身类的对象是不可以的。(3)(3)一般地,在类内先说明公有成员,它们是用户关心的,后面说明一般地,在类内先说明公有成员,它们是用户关心的,后面说明一般地,在类内先说明公有成员,它们是用户关心的,后面说明一般地,在类内先说明公有成员,它们是用户关心的,后面说明私有成员。私有成员。私有成员。私有成员。(4)(4)一般将类定义的说明部分或者整个定义部分一般将类定义的说明部分或者整个定义部分一般将类定义的说明部分或者整个定义部分一般将类定义的说明部分或者整个定义部分(包括实现部分包括实现部分包括实现部分包括实现部分)放在放在放在放在
24、一个头文件中。例如,可把一个头文件中。例如,可把一个头文件中。例如,可把一个头文件中。例如,可把LocationLocation类的定义放在类的定义放在类的定义放在类的定义放在Location.hLocation.h头文件头文件头文件头文件中,后面引用起来比较方便。中,后面引用起来比较方便。中,后面引用起来比较方便。中,后面引用起来比较方便。(5)(5)在类的说明部分之后必须加分号在类的说明部分之后必须加分号在类的说明部分之后必须加分号在类的说明部分之后必须加分号“;”;”。上一页 下一页返回任务任务1类与对象类与对象上一页 下一页返回任务任务1类与对象类与对象上一页 下一页返回任务任务1类与
25、对象类与对象3.3.对象的定义对象的定义对象的定义对象的定义 在面向对象程序设计中,类是具有相同的数据和相同操作的一组对象在面向对象程序设计中,类是具有相同的数据和相同操作的一组对象在面向对象程序设计中,类是具有相同的数据和相同操作的一组对象在面向对象程序设计中,类是具有相同的数据和相同操作的一组对象的集合。对象是描述其属性的数据以及对这些数据施加的一组操作封的集合。对象是描述其属性的数据以及对这些数据施加的一组操作封的集合。对象是描述其属性的数据以及对这些数据施加的一组操作封的集合。对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。对象是类的一个具体实现,称为实例,任
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工信版 编程 语言 基础 C+ 模块 教学 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内