C++高级语言程序设计第七章.ppt
- 文档编号:2638262
- 上传时间:2022-11-04
- 格式:PPT
- 页数:100
- 大小:355.50KB
C++高级语言程序设计第七章.ppt
《C++高级语言程序设计第七章.ppt》由会员分享,可在线阅读,更多相关《C++高级语言程序设计第七章.ppt(100页珍藏版)》请在冰豆网上搜索。
C+高级语言程序设计高级语言程序设计第第77章章类与对象类与对象北京邮电大学信息与通信工程学院北京邮电大学信息与通信工程学院类是实现C+面向对象程序设计的基础。
面向对象程序设计的基本特点有:
抽象、封装、继承和多态,类把数据和函数封装在一起,是C+封装的基本单元。
2022/11/42北京邮电大学信息与通信工程学院7.17.1类和对象的定义类和对象的定义7.27.2对象的使用对象的使用7.37.3构造函数构造函数7.47.4析构函数析构函数7.57.5类的静态成员类的静态成员7.67.6类成员的保护和使用类成员的保护和使用7.77.7运算符重载运算符重载7.87.8类的组合类的组合7.97.9应用举例应用举例7.107.10面向对象分析和设计面向对象分析和设计第第77章章类与对象类与对象2022/11/43北京邮电大学信息与通信工程学院7.17.1类和对象的定义类和对象的定义7.17.1类和对象的定义类和对象的定义一个类表示现实生活中的一类事物,比如“学生”,事物有相应的特征或属性,它们就是类的数据成员;事物可能有行为动作,也可能被某些行为动作所操作,这些都用函数来实现,这些函数和类有着不可分割的关系,是构成类的函数成员,或者叫成员函数。
在C+中,类实际上相当于一种用户自定义的数据类型。
2022/11/45北京邮电大学信息与通信工程学院对象是一类事物中的一个具体的个体。
在定义了类类型后,就可以定义该类型的变量,这个变量就称为类的对象(或实例)。
所以,从程序设计的角度来看,对象就相当于变量。
7.17.1类和对象的定义类和对象的定义2022/11/46北京邮电大学信息与通信工程学院举例:
classStudent/类的定义private:
intid;char20name;intage;floatscore;public:
voidgetscore()voidprintstu();7.17.1类和对象的定义类和对象的定义2022/11/47北京邮电大学信息与通信工程学院11、使用、使用类对象类对象如果已经知道某个类的功能和接口函数,就可以使用如果已经知道某个类的功能和接口函数,就可以使用它了。
先定义类对象,通过对象调用接口函数实现一它了。
先定义类对象,通过对象调用接口函数实现一定的功能。
定的功能。
classStudentstu01;/class也可以省略不写stu01.getscore();stu01.printstu();这这个个过过程程的的本本质质是是:
根根据据对对象象所所需需要要完完成成的的任任务务,向向对对象象发发送送消消息息。
对对象象收收到到消消息息后后,调调用用接接口口中中的的相相应应的的函函数数,完完成成它它的的功功能能。
对对象象只只需需要要知知道道“做做什什么么”,具体工作由成员函数来完成。
,具体工作由成员函数来完成。
2022/11/48北京邮电大学信息与通信工程学院22、类的声明类的声明类的声明具体说明类的组成,声明类的语法形式为:
class类名称public:
公有成员protect:
保护型成员private:
私有成员;2022/11/49北京邮电大学信息与通信工程学院其中,“成员”既可以是数据成员,也可以是成员函数的原型。
数据成员的声明方式与一般变量相同。
函数成员是描述类的对象可以进行的操作,一般在类中声明原型,在类声明的外面定义函数的具体实现。
关键字public、protect、private说明类成员的访问控制属性。
私有(private)成员只允许本类的成员函数来访问;公有(public)成员是类对外的接口,在类声明和类(函数)实现之后,类的对象可以访问公有成员。
保护型(protected)成员的可访问性和私有成员的性质相似。
22、类的声明类的声明2022/11/410北京邮电大学信息与通信工程学院关于访问控制属性,注意:
在类声明中,三种访问控制属性,可以按任意次序出现,也可以不出现。
public等关键字也可以多次出现,但是一个成员只能具有一种访问控制属性。
如果不写访问控制属性关键字,默认的是private。
在书写时通常习惯将公有类型放在最前面,这样便于阅读,因为它们是外部访问时所要了解的。
一般情况下,一个类的数据成员应该声明为私有成员,这样封装性较好。
一个类应该有一些公有的函数成员,作为对外的接口,否则别的代码无法访问类22、类的声明类的声明2022/11/411北京邮电大学信息与通信工程学院类的成员函数描述的是类的行为或操作。
函数的原型声明要在类的主体中,原型说明了函数的参数表和返回值类型。
而函数的具体实现一般是写在类声明之外的。
在类的外部定义成员函数的语法形式为:
返回值类型类名:
成员函数名(参数表)函数体33、类的成员函数类的成员函数2022/11/412北京邮电大学信息与通信工程学院如果在类的内部定义成员函数的具体实现,则该成员函数为内联成员函数。
函数定义时没有任何的附加说明,所以称为隐式声明的内联成员。
33、类的成员函数类的成员函数2022/11/413北京邮电大学信息与通信工程学院定义一个对象和定义一个一般变量相同。
定义变量时要分配存储空间,同样,定义一个对象时要分配存储空间,一个对象所占的内存空间是类的数据成员所占的空间总和。
类的成员函数存放在代码区,不占内存空间。
类的成员是抽象的,对象的成员才是具体的。
类的数据成员都不会有具体的属性值。
只有对象的成员才会有具体的属性值。
44、对象、对象2022/11/414北京邮电大学信息与通信工程学院声明了类及其对象,在类的外部(指类定义和成员函数的实现代码之外),就可以访问对象的公有成员(包括数据成员和函数成员)了。
在类的外部,只能通过对象访问类的公有成员;在类的成员函数内部,可以直接访问类的所有成员,这就实现了对访问范围的有效控制。
44、对象、对象2022/11/415北京邮电大学信息与通信工程学院类作用域是指类定义和相应的成员函数定义的范围,通俗地称为类的内部。
C+认为一个类的全部成员都是一个整体的相关部分。
一个类的所有成员位于这个类的作用域内,在该范围内,一个类的成员函数对本类的其它成员具有无限制的访问权。
55、类的作用域与可见性、类的作用域与可见性2022/11/416北京邮电大学信息与通信工程学院要声明一个时钟类,任何一个时钟都应该有时、分、秒的值,这就是时钟的属性特征;时钟的操作应该有设置时间、显示时间等。
66、时钟类举例、时钟类举例2022/11/417北京邮电大学信息与通信工程学院/声明时钟类的头文件:
声明时钟类的头文件:
Clock.hClock.h#include#includeusingnamespacestd;usingnamespacestd;classClockclassClock/类的声明类的声明public:
public:
voidSetTime(intnewH=0,intnewM=0,intnewS=0);voidSetTime(intnewH=0,intnewM=0,intnewS=0);voidShowTime();voidShowTime();voidShowTime(intn);voidShowTime(intn);private:
private:
intHour;intHour;intMinute;intMinute;intSecond;intSecond;66、时钟类举例、时钟类举例2022/11/418北京邮电大学信息与通信工程学院/实现类成员函数的源文件:
实现类成员函数的源文件:
Clock.cppClock.cpp#includeClock.h#includeClock.hvoidClock:
SetTime(intnewH,intnewM,intnewS)voidClock:
SetTime(intnewH,intnewM,intnewS)/SetTime/SetTime()()函数定义函数定义Hour=newH;Hour=newH;Minute=newM;Minute=newM;Second=newS;Second=newS;voidClock:
ShowTime()voidClock:
ShowTime()/ShowTime()/ShowTime()函数定义函数定义coutHour:
Minute:
Secondendl;coutHour:
Minute:
Secondendl;voidClock:
ShowTime(intn)voidClock:
ShowTime(intn)/重载函数的定义重载函数的定义coutHourcoutHour点点MinuteMinute分分SecondSecond秒秒endl;公有成员;例如:
Clockc;/在栈中分配Clock型存储空间Clock*pc1=newClock;/在堆中分配Clock型存储空间Clock*pc2=&c;pc1-SetTime(12,5,0);2022/11/423北京邮电大学信息与通信工程学院11、对象、对象指针指针/使用对象指针和堆对象对例使用对象指针和堆对象对例7-17-1中的主函数进行修改中的主函数进行修改voidmain()voidmain()Clock*pmyclock=newClock;Clock*pmyclock=newClock;pmyclock-SetTime(12,5,0);pmyclock-SetTime(12,5,0);pmyclock-ShowTime();pmyclock-ShowTime();deletepmyclock;deletepmyclock;2022/11/424北京邮电大学信息与通信工程学院22、thisthis指针指针问:
一个类中所有对象调用的成员函数都执行同一段代码。
那么,成员函数又是怎么识别当前是那个对象在访问呢?
答:
this指针指出了成员函数当前所操作的数据所属的对象。
不同的对象调用成员函数时,this指针将指向不同的对象,也就可以访问不同对象的数据成员。
2022/11/425北京邮电大学信息与通信工程学院33、对象数组、对象数组对象数组的元素是对象,不仅具有数据成员,而且还有函数成员,可以通过数组元素调用成员函数。
2022/11/426北京邮电大学信息与通信工程学院33、对象数组、对象数组/例例7-37-3使用对象数组使用对象数组#include#include#include#include#include#includeusingnamespacestd;usingnamespacestd;classstudentclassstudentprivate:
private:
intid;intid;stringname;stringname;intage;intage;floatscore;floatscore;public:
public:
voidset(int,char*,int,float);voidset(int,char*,int,float);voidprintstu()voidprintstu()coutcout学号:
学号:
idid姓名:
姓名:
setw(5)name;setw(5)name;coutcout年龄:
年龄:
ageage成绩:
成绩:
scoreendl;scoreendl;/student;/student类声明结束类声明结束2022/11/427北京邮电大学信息与通信工程学院33、对象数组、对象数组voidstudent:
set(inti,char*c,inta,floats)voidstudent:
set(inti,char*c,inta,floats)id=i;id=i;name=c;name=c;age=a;age=a;score=s;score=s;voidmain()voidm
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 高级 语言程序设计 第七