《多态性和虚函数》PPT课件.ppt

《多态性和虚函数》PPT课件.ppt

ID:51992951

大小:205.00 KB

页数:53页

时间:2020-03-27

《多态性和虚函数》PPT课件.ppt_第1页
《多态性和虚函数》PPT课件.ppt_第2页
《多态性和虚函数》PPT课件.ppt_第3页
《多态性和虚函数》PPT课件.ppt_第4页
《多态性和虚函数》PPT课件.ppt_第5页
资源描述:

《《多态性和虚函数》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++程序设计第9章 运算符重载与虚函数9.1多态性的概念及其表现形式9.2运算符重载的规则与方式9.3几种典型运算符的重载9.4类型转换9.5联编与虚函数9.6纯虚函数和抽象类主要内容多态性的概念及其表现形式顾名思义,多态的意思是一个事物有多种形态。从程序设计的角度看,通常指对于同一个消息、同一种调用,在不同的场合,不同的情况下,执行不同的行为。例如运算符的重载和虚函数。多态性是指发出同样的消息被不同类型的对象接收时导致完全不同的行为。消息──主要指对类的成员函数的调用。C++系统支持二种多态性:1.静态多态性──编译时的多态

2、性,其具体实现主要有:函数重载(详见5.5.2,本章不再介绍)和运算符重载2.动态多态性──运行时的多态性,其具体实现主要有:虚函数运算符重载的规则与方式我们为什么要运算符重载呢?这是因为C++预定义的运算符只是对基本数据类型进行操作,而对于自定义的数据类型,比如类,却没有类似的操作。为了实现对自定义类型的操作,就必须自己编写程序来说明某个运算符作用在这些数据类型上时,应该完成怎样的操作,这就要引入运算符重载的概念。运算符重载:就是对已有的运算符赋予多重含义。必要性:C++中预定义的运算符其运算对象只能是基本数据类型,而不适用于

3、用户自定义类型(如类)。实现机制:将指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参。编译系统对重载运算符的选择,遵循函数重载的选择原则,也就是说,运算符的重载实际上就是函数重载的一种特例。运算符重载的规则与方式-重载运算符的规则1.规则和限制(1)可以重载C++中除下列5个运算符外的所有运算符:.、*、::、?:、sizeof()(2)只能重载C++语言中已有的运算符,不可臆造新的。(3)不能改变原运算符的优先级和结合性。(4)运算符重载以后的功能应与原有功能类似,含义必须清楚,不能有二义性。2.运算符

4、重载函数的两种形式(1)重载为类成员函数。(2)重载为友元函数。运算符重载的规则与方式-重载运算符的规则3.重载运算符的语法形式运算符重载的方法,就是要编写一个以“operator运算符号”为函数名的运算符函数,该函数定义了重载的运算符将要执行的操作,函数的形参类型必须是自定义的类型。当使用该运算符对形参规定的数据类型进行运算时,就执行函数体中的操作,而不再是原运算符的操作了。其具体的语法形式为:函数类型类名::operator运算符(<参数表>){运算符函数体}运算符重载的规则与方式-重载运算符的规则其中,operator是定

5、义运算符重载函数的关键字;运算符是要重载的运算符的名称;参数表给出重载运算符所需要的参数和类型。重载为类成员函数时,参数个数=原操作数个数-1(后置++、--除外)。重载为友元函数时,参数个数=原操作数个数,且至少应该有一个自定义类型的形参。运算符重载的规则与方式-用成员函数重载运算符1.双目运算符如果要重载双目运算符(假设为B)为类成员函数,使之能够实现表达式oprd1Boprd2,其中oprd1为A类对象,则B应被重载为A类的成员函数,形参类型应该是oprd2所属的类型。相应的调用形式为:oprd1.operatorB(op

6、rd2)例9.1将“+”、“-”运算重载为复数类的成员函数规则:实部和虚部分别相加减。操作数:两个操作数都是复数类的对象。#includeclassComplex//复数类声明{private://私有数据成员doublereal,image;//复数实部,复数虚部public:Complex(doubler=0,doublei=0);//构造函数voidprint();//输出复数Complexoperator+(constComplex&other);//重载+为成员函数Complexoperator

7、-(constComplex&other);//重载-为成员函数};例9.1将“+”、“-”运算重载为复数类的成员函数Complex::Complex(doubler,doublei)//构造函数的实现{real=r;image=i;}voidComplex::print()//输出复数的实现{cout<0)cout<<"+"<

8、x::operator+(constComplex&other)//重载函数的实现{Complextemp;temp.real=real+other.real;temp.image=image+other.image;returntemp;}ComplexCom

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

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

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