第三章类与对象PPT讲稿.ppt
《第三章类与对象PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第三章类与对象PPT讲稿.ppt(171页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章类与对象第1页,共171页,编辑于2022年,星期二学习目标学习目标(1 1)理解类的概念,掌握类的定义方法)理解类的概念,掌握类的定义方法(2 2)理解对象与类的关系,掌握对象的创建和使用)理解对象与类的关系,掌握对象的创建和使用方法方法(3 3)掌握构造函数、析构函数的概念和使用方法)掌握构造函数、析构函数的概念和使用方法(4 4)掌握拷贝构造函数的使用方法)掌握拷贝构造函数的使用方法(5 5)掌握对象数组和对象指针的特点和使用方法)掌握对象数组和对象指针的特点和使用方法(6 6)掌握函数调用中参数的传递方式)掌握函数调用中参数的传递方式(7 7)理解类的组合的特点)理解类的组合的特
2、点第2页,共171页,编辑于2022年,星期二3.1 3.1 类和对象的概念类和对象的概念类是对一组具有共同属性特征和行为特征的实体(对类是对一组具有共同属性特征和行为特征的实体(对象)的抽象,它将相关数据及对这些数据的操作组合在一象)的抽象,它将相关数据及对这些数据的操作组合在一起。起。对象是封装了数据和可以施加在这些数据上的操作对象是封装了数据和可以施加在这些数据上的操作的封装体,它是类的实际变量,即类的实例。的封装体,它是类的实际变量,即类的实例。第3页,共171页,编辑于2022年,星期二3.1.1类的基本概念 类(类(classclass)是面向对象系统中最基本的组成)是面向对象系统
3、中最基本的组成元素,是一种自定义数据类型。在元素,是一种自定义数据类型。在C+C+中,类是一些中,类是一些具有相同属性和行为的对象的抽象。具有相同属性和行为的对象的抽象。第4页,共171页,编辑于2022年,星期二3.1.2对象的基本概念 对象是某个特定类所描述的实例。现实世界中的任何对象是某个特定类所描述的实例。现实世界中的任何一种事物都可以看成一个对象一种事物都可以看成一个对象(Object)(Object),即万物皆对象。,即万物皆对象。第5页,共171页,编辑于2022年,星期二3.2 3.2 类的定义类的定义 类的定义包括两部分:类头和类体。类的定义包括两部分:类头和类体。类头由关键
4、字类头由关键字“class”“class”及其后面的类名构成;及其后面的类名构成;类体用于对类的数据成员和成员函数进行声明,并指类体用于对类的数据成员和成员函数进行声明,并指定相应成员的访问级别。定相应成员的访问级别。第6页,共171页,编辑于2022年,星期二3.2.1类的定义格式class类名类名private:数据成员或成员函数数据成员或成员函数protected:数据成员或成员函数数据成员或成员函数public:数据成员或成员函数数据成员或成员函数;第7页,共171页,编辑于2022年,星期二说明:说明:(1 1)classclass是声明类的关键字,是声明类的关键字,classcla
5、ss后跟类名。类后跟类名。类名的首字符通常采用大写字母。名的首字符通常采用大写字母。(2 2)类的成员包括数据成员和成员函数两类。)类的成员包括数据成员和成员函数两类。(3 3)类声明中的)类声明中的privateprivate、protectedprotected和和publicpublic关键字称为关键字称为访问权限符,它规定了类中成员的访问属性。访问权限符,它规定了类中成员的访问属性。C+C+中规定,一个中规定,一个访问权限符后面说明的所有成员都具有由这一访问权限符规定访问权限符后面说明的所有成员都具有由这一访问权限符规定的访问属性,直到另一个不同的访问权限符出现。对于一个具的访问属性,
6、直到另一个不同的访问权限符出现。对于一个具体的类,类声明中的体的类,类声明中的privateprivate、protectedprotected和和publicpublic三个部分不三个部分不一定都要有,但至少应该有其中一个部分。一定都要有,但至少应该有其中一个部分。(4 4)在)在C+C+中,由于类是一种数据类型,系统不会为其分配中,由于类是一种数据类型,系统不会为其分配存储空间,所以不能在类声明中给数据成员赋初值。存储空间,所以不能在类声明中给数据成员赋初值。(5 5)类声明完成后一定要以)类声明完成后一定要以“;”“;”结束。结束。第8页,共171页,编辑于2022年,星期二 【例【例3
7、-13-1】声明一个学生类】声明一个学生类 分析:每个学生都有学号、姓名和性别;对于学分析:每个学生都有学号、姓名和性别;对于学生的基本操作有输入、输出信息等。生的基本操作有输入、输出信息等。第9页,共171页,编辑于2022年,星期二classStudent/声明类private:/访问权限:私有成员charstudentNo10;/属性,数据成员,表示学号charstudentName20;/属性,数据成员,表示姓名charstudentSex6;/属性,数据成员,表示性别public:/访问权限:公有成员 Student();/行为,成员函数的原型声明,表示构造函数voidinput()
8、;voidprint();/类声明结束第10页,共171页,编辑于2022年,星期二3.2.2类的成员 对于对于C+C+,类中共有两类成员:,类中共有两类成员:1 1)代表对象属性的数据成员)代表对象属性的数据成员 2 2)代表实现对象行为的成员函数)代表实现对象行为的成员函数第11页,共171页,编辑于2022年,星期二3.2.3类成员访问控制权限 public public(公有类型)、(公有类型)、privateprivate(私有类型)和(私有类型)和protectedprotected(保护类型)。(保护类型)。1 1、publicpublic(公有类型)(公有类型)public p
9、ublic声明成员为公有成员。具有这个访问控制级别声明成员为公有成员。具有这个访问控制级别的成员是完全公开的,即该成员不但可以被它所在类的成的成员是完全公开的,即该成员不但可以被它所在类的成员函数及该类的友元函数访问,而且也可以被和该类对象员函数及该类的友元函数访问,而且也可以被和该类对象处在同一作用域内的任何函数访问。处在同一作用域内的任何函数访问。第12页,共171页,编辑于2022年,星期二 【例【例3-23-2】具有】具有publicpublic访问权限的成员的应用访问权限的成员的应用#include stdafx.h#include stdafx.h#includeiostream#
10、includeiostreamusing namespace std;using namespace std;class Limitclass Limitpublic:public:/声明类的公有成员声明类的公有成员 char name30;char name30;void accept()void accept()coutn Enter your name,please:;coutname;cinname;/类的成员函数访问类的共有数据成员类的成员函数访问类的共有数据成员 coutn Your name is:nameendl;coutn Your name is:nameendl;void
11、 main()void main()Limit c;Limit c;/定义类的对象定义类的对象 c.accept();c.accept();/通过对象访问类的公有成员函数通过对象访问类的公有成员函数 coutc.nameendl;coutc.nameendl;/通过对象访问类的公有数据成员通过对象访问类的公有数据成员第13页,共171页,编辑于2022年,星期二说明:说明:(1 1)在一个项目中的每一个)在一个项目中的每一个.cpp.cpp文件都包含有大量的相同文件都包含有大量的相同的的MFCMFC标准头文件,这些头文件都非常大,即使有一个快速的处标准头文件,这些头文件都非常大,即使有一个快速
12、的处理程序,完成其编译也要花费相当长的时间,因此,对这些头理程序,完成其编译也要花费相当长的时间,因此,对这些头文件进行预先编译,以后该工程编译时,不再编译这部分头文文件进行预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果,就可以节省大量的编译时间。件,仅仅使用预编译的结果,就可以节省大量的编译时间。“stdafx.h”“stdafx.h”文件中就包含了这些必要的标准头文件。文件中就包含了这些必要的标准头文件。#include stdafx.h#include stdafx.h的作用就是令编译器编译出一个的作用就是令编译器编译出一个stdafx.objstdafx.obj
13、预编译头文件。因此,一般预编译头文件。因此,一般.cpp.cpp文件的第一条语句文件的第一条语句都是都是#include stdafx.h#include stdafx.h。第14页,共171页,编辑于2022年,星期二 (2 2)#include“iostream”#include“iostream”表示将文件表示将文件iostreamiostream中的中的代码嵌入到程序中该指令所在的地方。文件代码嵌入到程序中该指令所在的地方。文件iostreamiostream中声明中声明了相关的输入和输出操作信息。了相关的输入和输出操作信息。(3 3)和)和C C语言一样,在语言一样,在C+C+中,中
14、,mainmain是主函数名,每一个是主函数名,每一个项目中有且仅有一个主函数,它表示程序执行的开始点。项目中有且仅有一个主函数,它表示程序执行的开始点。第15页,共171页,编辑于2022年,星期二 (4 4)coutcout和和cincin是是C+C+预定义的流类对象,它们被定义在预定义的流类对象,它们被定义在iostreamiostream文件的文件的stdstd命名空间中,用来实现数据的输出命名空间中,用来实现数据的输出/输入操作。输入操作。输出操作是由输出操作是由coutcout和和“”“”“”结合表示接收从标准输入设备(键盘)输入的数据。结合表示接收从标准输入设备(键盘)输入的数据
15、。第16页,共171页,编辑于2022年,星期二 2 2、privateprivate(私有类型)(私有类型)private private声明成员为私有成员。具有这个访问控声明成员为私有成员。具有这个访问控制级别的成员对类外是完全保密的,即只能被它所在制级别的成员对类外是完全保密的,即只能被它所在类中的成员函数和该类的友元函数访问。类中的成员函数和该类的友元函数访问。第17页,共171页,编辑于2022年,星期二【例【例3-33-3】具有】具有privateprivate访问权限的成员的应用访问权限的成员的应用#include stdafx.h#include stdafx.h#includ
16、eiostream#includeiostreamusing namespace std;using namespace std;class Limitclass Limitprivate:private:/声明类的私有成员声明类的私有成员 float imprest;float imprest;void warning()void warning()coutWarning!;coutWarning!;第18页,共171页,编辑于2022年,星期二public:public:/声明类的公有成员声明类的公有成员 void accept()void accept()coutn Enter your
17、 imprest,please:t;coutimprest;cinimprest;coutn Your imprest is:timprest;coutn Your imprest is:timprest;/类的私有数据成员可以被本类的成员函数访问类的私有数据成员可以被本类的成员函数访问 void display()void display()coutn Now,your imprest is:timprest;coutn Now,your imprest is:timprest;warning warning();();/类的私有成员函数可以被本类的成员函数访问类的私有成员函数可以被本类的成
18、员函数访问;第19页,共171页,编辑于2022年,星期二void main()void main()Limit c;Limit c;c.accept();c.accept();c.display();c.display();c.imprest=3.3f;c.imprest=3.3f;/错误,不能通过对象访问类的私有数据成员错误,不能通过对象访问类的私有数据成员 c.warning();c.warning();/错误,不能通过对象访问类的私有成员函数错误,不能通过对象访问类的私有成员函数 第20页,共171页,编辑于2022年,星期二第21页,共171页,编辑于2022年,星期二 3 3、pr
19、otectedprotected(保护类型)(保护类型)protected protected声明成员为保护成员。具有这个访问声明成员为保护成员。具有这个访问控制级别的成员,外界是无法直接访问的。它只能被控制级别的成员,外界是无法直接访问的。它只能被它所在类及从该类派生的子类的成员函数及友元函数它所在类及从该类派生的子类的成员函数及友元函数访问。访问。第22页,共171页,编辑于2022年,星期二例【例【3-43-4】具有】具有protectedprotected访问权限的成员的应用访问权限的成员的应用#include stdafx.h#include stdafx.hclass Limitc
20、lass Limit protected:protected:/声明类的保护成员声明类的保护成员 float imprest;float imprest;void warning()void warning()coutWarning!;coutimprest;/类的保护数据成员可以被本类的成员函数访问coutnYourimprestis:timprest;第24页,共171页,编辑于2022年,星期二class Extends:public Limit class Extends:public Limit /声明类声明类LimitLimit的派生类的派生类ExtendsExtends publ
21、ic:public:void ext_display()void ext_display()coutn the display of extends class is:;coutn the display of extends class is:;warning();warning();/访问从基类继承的保护成员函数访问从基类继承的保护成员函数 ;第25页,共171页,编辑于2022年,星期二void main()Limit c;Limit c;c.accept();c.accept();c.imprest;c.imprest;/错误类的对象不能访问类的保护数据成员错误类的对象不能访问类的保护
22、数据成员 c.warning;c.warning;/错误类的对象不能访问类的保护成员函数错误类的对象不能访问类的保护成员函数 第26页,共171页,编辑于2022年,星期二第27页,共171页,编辑于2022年,星期二 publicpublic、protectedprotected和和privateprivate三种类成员的可访问性三种类成员的可访问性访问限定符自身的类成员是否可访问子类的类成员是否可访问自身的类对象是否可访问publicprotectedprivate第28页,共171页,编辑于2022年,星期二3.2.4成员函数的实现方式 类的成员函数也是函数的一种,它与一般函数的区类的成
23、员函数也是函数的一种,它与一般函数的区别是:它属于一个特定的类,并且它必须被指定为别是:它属于一个特定的类,并且它必须被指定为privateprivate、publicpublic或或protectedprotected三种访问权限中的一种。三种访问权限中的一种。在使用类的成员函数时,要注意它的访问权限在使用类的成员函数时,要注意它的访问权限(它能否被访问它能否被访问),以及它的作用域,以及它的作用域(类函数能在什么类函数能在什么范围内被访问范围内被访问)。第29页,共171页,编辑于2022年,星期二 类的成员函数的定义方式有两种类的成员函数的定义方式有两种:第一种方式是在类中进行函数原型说
24、明,而函第一种方式是在类中进行函数原型说明,而函数体则在类外进行定义。数体则在类外进行定义。采用这种方式定义类函数时,必须用作用域符采用这种方式定义类函数时,必须用作用域符“:”“:”表明该函数所属的类。表明该函数所属的类。第30页,共171页,编辑于2022年,星期二返回类型返回类型类名类名:函数名(参数列表)函数名(参数列表)/函数体函数体第31页,共171页,编辑于2022年,星期二【例【例3-53-5】定义时钟类。】定义时钟类。#include stdafx.h#include stdafx.h#include iostream#include iostreamusing namesp
25、ace std;using namespace std;class Clockclass Clock private:private:int hour,minute,second;int hour,minute,second;public:public:void setTime(int newH,int newM,int newS);void setTime(int newH,int newM,int newS);/函数原型说明函数原型说明 void showTime();void showTime();/函数原型说明函数原型说明 ;第32页,共171页,编辑于2022年,星期二 void C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 对象 PPT 讲稿
限制150内