第三讲 C++面向对象程序设计.ppt
《第三讲 C++面向对象程序设计.ppt》由会员分享,可在线阅读,更多相关《第三讲 C++面向对象程序设计.ppt(135页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3.1 3.1 类的诞生类的诞生类的诞生类的诞生3.2 3.2 类的声明和对象的定义类的声明和对象的定义类的声明和对象的定义类的声明和对象的定义3.3 3.3 类的成员及特征类的成员及特征类的成员及特征类的成员及特征3.4 3.4 继承与派生类继承与派生类继承与派生类继承与派生类3.5 3.5 多态性与虚函数多态性与虚函数多态性与虚函数多态性与虚函数3.6 3.6 运算符重载运算符重载运算符重载运算符重载3.7 3.7 输入输入输入输入/输出流库输出流库第第3讲讲 C+面向对象面向对象程序设计程序设计Visual C+Visual C+程序设计程序设计程序设计程序设计 Visual C+Vis
2、ual C+程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲 C+C+面向对象面向对象面向对象面向对象程序设程序设程序设程序设计计计计3.1 类的诞生类的诞生 从面向过程到面向对象从面向过程到面向对象l上世纪六十年代中后期软件危机发生之后,面向过程上世纪六十年代中后期软件危机发生之后,面向过程(procedure-oriented)的结构化程序设计()的结构化程序设计(structuredprogramming,SP)成为主流。)成为主流。l在结构化程序设计中,采用的是在结构化程序设计中,采用的是“自顶向下,逐步细化自顶向下,逐步细化”的思想。它的具体操作方法是的思想。它的具体操作方法
3、是模块化模块化,是按功能来分的,是按功能来分的,所以也称所以也称功能块功能块。l当程序规模大到一定程度了,一点点小的变化会引起整当程序规模大到一定程度了,一点点小的变化会引起整个程序的改动,这样面向过程中的困难就呈现出来了。个程序的改动,这样面向过程中的困难就呈现出来了。Visual C+Visual C+程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲 C+C+面向对象面向对象面向对象面向对象程序设程序设程序设程序设计计计计3.1 类的诞生类的诞生 从面向过程到面向对象从面向过程到面向对象l面向对象的程序设计思路面向对象的程序设计思路l相关概念:相关概念:1 1)对象对象对象对象 属
4、性与行为属性与行为属性与行为属性与行为2 2)封装封装封装封装 3 3)信息隐蔽信息隐蔽信息隐蔽信息隐蔽:信息隐蔽指在设计和确定模块时信息隐蔽指在设计和确定模块时信息隐蔽指在设计和确定模块时信息隐蔽指在设计和确定模块时,使得一个使得一个使得一个使得一个模块内包含信息模块内包含信息模块内包含信息模块内包含信息(过程或数据过程或数据过程或数据过程或数据),),对于不需要这些信息的其他模对于不需要这些信息的其他模对于不需要这些信息的其他模对于不需要这些信息的其他模块来说块来说块来说块来说,是不能访问的是不能访问的是不能访问的是不能访问的.4 4)抽象与类抽象与类抽象与类抽象与类对象对象类类计计 算算
5、 机机世界世界实体实体抽象类抽象类别别现实世界现实世界客观世界客观世界抽抽象象抽抽象象实实例例化化映映射射主观世界主观世界对象、实体与类对象、实体与类现实世界中的实体可现实世界中的实体可以抽象出类别的概念。对以抽象出类别的概念。对应于计算机世界就有一个应于计算机世界就有一个类(类(classclass)的概念,因为的概念,因为类是一个抽象的概念的对类是一个抽象的概念的对应体,所以计算机不给它应体,所以计算机不给它分配内存,只给对象分配分配内存,只给对象分配内存。左图表达了计算机内存。左图表达了计算机世界与现实世界之间的对世界与现实世界之间的对应关系。应关系。Visual C+Visual C+
6、程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲 C+C+面向对象面向对象面向对象面向对象程序设程序设程序设程序设计计计计3.1 类的诞生类的诞生Visual C+Visual C+程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲 C+C+面向对象面向对象面向对象面向对象程序设程序设程序设程序设计计计计 类的诞生类的诞生3.1 类的诞生类的诞生l类(类(Class)是面向对象思想中的一个重要组成)是面向对象思想中的一个重要组成部分。部分。如何在计算机中将如何在计算机中将“类类”表达出来?表达出来?l从结构体到类从结构体到类1 1)定义一个结构体定义一个结构体定义一个结构体定义一
7、个结构体structSAMPLEintmember1,member2;var1;以后,就可以使用结构中的成员:以后,就可以使用结构中的成员:intvar=var1.member1*var1.member2;Visual C+Visual C+程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲 C+C+面向对象面向对象面向对象面向对象程序设程序设程序设程序设计计计计3.1 类的诞生类的诞生2 2)将结构体成员的使用代码写成一个函数,将结构体成员的使用代码写成一个函数,将结构体成员的使用代码写成一个函数,将结构体成员的使用代码写成一个函数,得到:得到:得到:得到:l从结构体到类从结构体到类i
8、ntfun1(structSAMPLEvar)returnvar.member1*var.member2;操作结构体变量操作结构体变量Visual C+Visual C+程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲 C+C+面向对象面向对象面向对象面向对象程序设程序设程序设程序设计计计计3.1 类的诞生类的诞生3 3)将上面的函数放入结构体中:将上面的函数放入结构体中:将上面的函数放入结构体中:将上面的函数放入结构体中:l从结构体到类从结构体到类structSAMPLEintfun1()returnvar.member1*var.member2;intmember1,member2
9、;函数成员函数成员数据成员数据成员Visual C+Visual C+程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲 C+C+面向对象面向对象面向对象面向对象程序设程序设程序设程序设计计计计3.1 类的诞生类的诞生这样的结构体就具有了一定的这样的结构体就具有了一定的属性属性(member1和和member2),也具有一定的,也具有一定的行为行为(函数函数fun1)。它。它就是就是“类类”的雏形。的雏形。structSAMPLEvar;var.member1=var.member2=10;inttemp=var.calcu();该结构体的使用方法如下:该结构体的使用方法如下:Visua
10、l C+Visual C+程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲 C+C+面向对象面向对象面向对象面向对象程序设程序设程序设程序设计计计计Visual C+Visual C+程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲 C+C+面向对象面向对象面向对象面向对象程序设程序设程序设程序设计计计计3.2 类和对象的定义类和对象的定义 类的定义类的定义类一般分为声明部分和实现部分。其一般格式如下:类一般分为声明部分和实现部分。其一般格式如下:类类体体class类名类名private:私有数据和函数私有数据和函数;public:公有数据和函数公有数据和函数;protecte
11、d:保护性数据和函数保护性数据和函数;Visual C+Visual C+程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲 C+C+面向对象面向对象面向对象面向对象程序设程序设程序设程序设计计计计3.2 类和对象的定义类和对象的定义说明:说明:(1)声明部分用来声明数据成员和成员函数,实现部)声明部分用来声明数据成员和成员函数,实现部分是用来对成员函数的定义;分是用来对成员函数的定义;(2)最后的分号不可少,这是一条说明语句;)最后的分号不可少,这是一条说明语句;(3)关键字)关键字class是是数据类型说明符数据类型说明符,指出下面说明,指出下面说明的是类。关键字的是类。关键字pri
12、vate、public和和protected是一种是一种访问限定符。访问限定符。(4)数据成员的类型可以是任意的,包含整型、浮点)数据成员的类型可以是任意的,包含整型、浮点型、字符型、数组、指针等。不允许对所定义的数据型、字符型、数组、指针等。不允许对所定义的数据成员进行初始化。成员进行初始化。Visual C+Visual C+程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲 C+C+面向对象面向对象面向对象面向对象程序设程序设程序设程序设计计计计3.2 类和对象的定义类和对象的定义l访问限定符访问限定符public private protected注意注意:(1)后两种说明的成员
13、是不能从外部进行访问的;后两种说明的成员是不能从外部进行访问的;(2)每种说明符可在类体中使用多次每种说明符可在类体中使用多次;(3)它们的作用域是从该说明符出现开始到下一个说它们的作用域是从该说明符出现开始到下一个说明符之前或类体结束之前结束明符之前或类体结束之前结束;(4)如果在类体起始点无访问说明符,系统默认定义如果在类体起始点无访问说明符,系统默认定义为私有(为私有(private);(5)访问说明符访问说明符private(私有的)和(私有的)和protected(保(保护的)体现了类具有封装性(护的)体现了类具有封装性(Encapsulation).Visual C+Visual
14、C+程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲 C+C+面向对象面向对象面向对象面向对象程序设程序设程序设程序设计计计计3.2 类和对象的定义类和对象的定义l成员函数的定义成员函数的定义函数定义通常在类的说明之后进行,其格式如下:函数定义通常在类的说明之后进行,其格式如下:返回值类型返回值类型类名类名:函数名函数名(参数表参数表)/函数体函数体其中运算符其中运算符“:”称为称为作用域运算符作用域运算符,它指出该函,它指出该函数是属于哪一个类的成员函数。当然也可以在类的定数是属于哪一个类的成员函数。当然也可以在类的定义中直接定义函数。义中直接定义函数。说明:说明:将类单独存放在一个
15、文件中或将类的声明放在将类单独存放在一个文件中或将类的声明放在.h文件中而将成员函数的实现放在与文件中而将成员函数的实现放在与.h文件同名的文件同名的.cpp文件文件中。中。Visual C+Visual C+程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲 C+C+面向对象面向对象面向对象面向对象程序设程序设程序设程序设计计计计3.2 类和对象的定义类和对象的定义l成员函数的特征成员函数的特征1)内联性内联性定义在类体内的成员函数为内联函数,定义在类体外的成员函数为外联函数。2)重载性重载性成员函数可以重载。3)设置参数默认值设置参数默认值成员函数可以设置参数的默认值。Visual
16、C+Visual C+程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲 C+C+面向对象面向对象面向对象面向对象程序设程序设程序设程序设计计计计3.2 类和对象的定义类和对象的定义 练习练习构建一个构建一个Time类,私有型数据成员类,私有型数据成员(int)hour,minute,second,两个公共型成员函数两个公共型成员函数display1,display2分别以两种不同的格式分别以两种不同的格式(“#:#:#”,“#时时#分分#秒秒”)显示时间。显示时间。Visual C+Visual C+程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲 C+C+面向对象面向对象面向
17、对象面向对象程序设程序设程序设程序设计计计计3.2 类和对象的定义类和对象的定义 对象的定义对象的定义(1)一般对象的定义格式一般对象的定义格式类名类名对象名表对象名表;(2)指向对象的指针定义格式指向对象的指针定义格式类名类名*指针名指针名;(3)对象引用的定义格式对象引用的定义格式类名类名&引用名引用名=对象名对象名;1、对象的定义格式、对象的定义格式Visual C+Visual C+程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲 C+C+面向对象面向对象面向对象面向对象程序设程序设程序设程序设计计计计3.2 类和对象的定义类和对象的定义 对象的定义对象的定义(1)一般对象成员
18、表示方法一般对象成员表示方法对象名对象名.数据成员名数据成员名/用来表示数据成员用来表示数据成员或或对象名对象名.成员函数名成员函数名(参数表参数表)/用来表示成员函用来表示成员函数数(2)指向对象的指针成员表示方法指向对象的指针成员表示方法指针名指针名-数据成员名数据成员名/用来表示数据成员用来表示数据成员或或指针名指针名-成员函数名成员函数名(参数表参数表)/用来表示成员函用来表示成员函数数(3)对象引用成员表示方法(同对象)对象引用成员表示方法(同对象)2、对象成员的表示方法、对象成员的表示方法Visual C+Visual C+程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲
19、C+C+面向对象面向对象面向对象面向对象程序设程序设程序设程序设计计计计3.2 类和对象的定义类和对象的定义1)“-”与与“.”运算符的区别是:运算符的区别是:“-”用来表用来表示指向对象的指针成员,示指向对象的指针成员,“.”用来表示一般对用来表示一般对象成员。象成员。2)下面的两种表示是等价的:下面的两种表示是等价的:-(*).这对于成员函数也适用。这对于成员函数也适用。l-与与.Visual C+Visual C+程序设计程序设计程序设计程序设计 第第第第3 3讲讲讲讲 C+C+面向对象面向对象面向对象面向对象程序设程序设程序设程序设计计计计3.3 类的成员及特征类的成员及特征3.3.1
20、 构造函数与析构函数构造函数与析构函数3.3.2 对象成员的初始化对象成员的初始化3.3.3 静态成员静态成员3.3.4 友元友元3.3.5 常类型常类型3.3.6 this指针指针3.3.7 类的作用域和对象的生存期类的作用域和对象的生存期第第第第3 3讲讲讲讲 C+C+面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计3.33.3类的成员及特征类的成员及特征类的成员及特征类的成员及特征3.3.1 构造函数与析构函数构造函数与析构函数构造函数构造函数l为为了了能能给给数数据据成成员员自自动动设设置置某某些些初初始始值值,就就要要使使用用类类的的特特殊殊成成员员函函数数构构造造函
21、函数数。构构造造函函数数是是特特殊殊的的公公有有成员函数成员函数。l构构造造函函数数的的最最大大特特点点是是在在对对象象建建立立时时它它会会被被自自动动执执行行,用于变量、对象的初始化代码一般放在构造函数中。用于变量、对象的初始化代码一般放在构造函数中。l构构造造函函数数必必须须与与相相应应的的类类同同名名,可可以以带带参参数数,也也可可以以不带参数,可以重载不带参数,可以重载。第第第第3 3讲讲讲讲 C+C+面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计3.33.3类的成员及特征类的成员及特征类的成员及特征类的成员及特征3.3.1 构造函数与析构函数构造函数与析构函数例如:
22、例如:classCMeterpublic:CMeter(intnPos=10)/构造函数构造函数m_nPos=nPos;.构造函数构造函数CMeter(intnPos=10)中,中,nPos被设置了被设置了10,构造函数中相应实参没有被指定时,使用此缺省值。构造函数中相应实参没有被指定时,使用此缺省值。第第第第3 3讲讲讲讲 C+C+面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计3.33.3类的成员及特征类的成员及特征类的成员及特征类的成员及特征3.3.1 构造函数与析构函数构造函数与析构函数析构函数析构函数当一个对象定义时,当一个对象定义时,C+C+自动调用构造函数建立该对
23、象并自动调用构造函数建立该对象并进行初始化,那么当一个对象的生命周期结束时,进行初始化,那么当一个对象的生命周期结束时,C+C+也会自也会自动调用一个函数动调用一个函数注销注销该对象并进行善后工作,这个特殊的成员该对象并进行善后工作,这个特殊的成员函数即函数即析构函数(析构函数(destructordestructor)。析构函数是另一种特殊的析构函数是另一种特殊的C+C+成员函数,它只是在类名称前成员函数,它只是在类名称前面加上一个面加上一个“”符号。符号。例如:例如:classCMeterpublic:.CMeter()/析构函数析构函数.第第第第3 3讲讲讲讲 C+C+面向对象程序设计面
24、向对象程序设计面向对象程序设计面向对象程序设计3.33.3类的成员及特征类的成员及特征类的成员及特征类的成员及特征3.3.1 构造函数与析构函数构造函数与析构函数析构函数的特点析构函数的特点1)构函数名与类名相同,但在前面加上字符构函数名与类名相同,但在前面加上字符,如,如CMeter()。2)析构函数无函数返回类型,不带任何参数。析构函数无函数返回类型,不带任何参数。3)一个类有且只有一个析构函数,可以缺省。一个类有且只有一个析构函数,可以缺省。4)对象注销时,系统自动调用析构函数。对象注销时,系统自动调用析构函数。5)new为对象分配动态内存,用为对象分配动态内存,用delete释放对象时
25、,析释放对象时,析构函数被自动调用。构函数被自动调用。第第第第3 3讲讲讲讲 C+C+面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计3.33.3类的成员及特征类的成员及特征类的成员及特征类的成员及特征3.3.1 构造函数与析构函数构造函数与析构函数默认构造函数和析构函数默认构造函数和析构函数l类定义时,如果没有定义任何构造函数类定义时,如果没有定义任何构造函数,编译器自动生成编译器自动生成一个不带参数的默认构造函数,格式如下:一个不带参数的默认构造函数,格式如下::()l如果一个类中没有定义析构函数,编译系统生成一个默认如果一个类中没有定义析构函数,编译系统生成一个默认析构函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三讲 C+面向对象程序设计 第三 C+ 面向 对象 程序设计
限制150内