C++程序设计简明教程教学课件王晓东第8章多态性.ppt

C++程序设计简明教程教学课件王晓东第8章多态性.ppt

ID:50082181

大小:118.50 KB

页数:27页

时间:2020-03-08

C++程序设计简明教程教学课件王晓东第8章多态性.ppt_第1页
C++程序设计简明教程教学课件王晓东第8章多态性.ppt_第2页
C++程序设计简明教程教学课件王晓东第8章多态性.ppt_第3页
C++程序设计简明教程教学课件王晓东第8章多态性.ppt_第4页
C++程序设计简明教程教学课件王晓东第8章多态性.ppt_第5页
资源描述:

《C++程序设计简明教程教学课件王晓东第8章多态性.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章多态性8.1概述8.2运算符重载8.3虚函数8.4抽象类8.1概述多态性(polymorphism)是指不同类型的对象在收到相同的消息时,做出了不同的响应。C++语言的多态性是指定义了一批名字相同的函数,但是它们执行的是不同的操作。绑定绑定(binding)是指把一条消息与一个对象的方法相结合的过程,具体地说,绑定就是把一个标识符与一个存储地址联系在一起,以确定操作的具体对象。按绑定的时机划分,有静态绑定和动态绑定。其中静态绑定在程序编译链接的阶段完成,又称为前期绑定;动态绑定则是在程序运行的阶

2、段完成,又称为后期绑定。动态绑定静态绑定支持的多态性称为编译时的多态性,C++主要通过函数重载和运算符重载,实现编译时的多态性。动态绑定支持的多态性称为运行时的多态性,C++主要通过虚函数和抽象类,实现运行时的多态性。8.2运算符重载通过定义函数重新解释运算符的方式,将运算符和类的对象结合在一起,这称为运算符重载。运算符重载是C++提供的一个华丽的技巧,使程序员可以为用户设计更为直观的接口,并且增强了程序的可读性。规则C++语言的大部分运算符都可以被重载,只有5个运算符不能被重载。运算符重载的本质是函

3、数重载,在函数的定义中对运算符的操作赋予程序员自己新的解释。C++的运算符重载一般有两种形式,重载为类的成员函数和重载为类的友元函数。说明1.只能重载现有的运算符,不能主观臆造C++语言未提供的运算符。2.运算符重载不能改变运算符固有的优先级、结合性以及操作数的个数。3.运算符重载的参数中至少有一个是自定义类型。4.运算符重载必须显式定义。5.不要试图改变运算符的原有语义。重载为成员函数class类名{public:类型operator运算符(形参列表);…};类型类名::operator运算符(形参

4、列表){…}说明运算符重载为类的成员函数时,其函数形参的个数通常要比运算符原来的操作数少一个。重载后缀运算符++时,其函数要增加一个整型形参。该形参只给出类型(int),不给出名字,它仅仅起到区别前缀运算符和后缀运算符的作用,并不参与实际的运算。重载为类的友元函数class类名{public:friend类型operator运算符(形参列表);…};类型operator运算符(形参列表){…}流插入运算符<<的重载classfraction{public:friendostream&operator<

5、<(ostream&out,constfraction&s);…};ostream&operator<<(ostream&out,constfraction&s){out<的重载,必须采用重载为成员函数的形式。如果类中定义了指针成员,则必须显式地定义赋值运算符重载函数,进行深拷贝。下标运算符重载之后,使得对象可以象数组一样动作。函数调用运算符的重载,使得对象

6、的行为与函数的行为类似。向量类classvect{public:vect&operator=(vect&s);intoperator[](inti);intoperator()(inti);……private:intlen;//向量长度int*p;};=重载vect&vect::operator=(vect&s){for(inti=0;i

7、=0

8、

9、i>len)error(1);return(*(p+i-1));}()重载intvect::operator()(inti){if(i<=0

10、

11、i>len)error(1);return(*(p+i-1));}8.3虚函数class类名{public:virtual类型函数名(形参列表);//虚函数…};说明1.关键字virtual只能出现在成员函数的声明中。2.如果在基类中已经声明了虚函数,则派生类中原型相同的成员函数将自动成为虚函数。3.静态成员函数不得被声明为虚函数。4.构造函数不允许被

12、声明为虚函数,但允许声明虚析构函数。案例classA{public:A(intx);virtualvoiddisplay(void);//虚函数protected:inta;};classB:publicA{public:B(intx,inty);voiddisplay(void);protected:inta;};classC:publicA{public:C(intx,inty);voiddisplay(void);protected:inta;};

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。