当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

重庆交通大学:《C++面向对象程序设计》第五章 多态性(罗宪)

资源类别:文库,文档格式:PPT,文档页数:68,文件大小:646KB,团购合买
一、多态性及有关概念 二、运行符重载 三、虚函数
点击下载完整版文档(PPT)

EC+面向对象程序设计 计算机与信息学院 罗宪

C++面向对象程序设计 计算机与信息学院 罗宪

第五章多态性(教材()P252-P304) 本章主要内容: >多态性及有关概念 >运行符重载 >虚函数

第五章 多态性 (教材⑴P252-P304) 本章主要内容: ➢多态性及有关概念 ➢运行符重载 ➢虚函数

第一节多态性及有关概念 多态性 >多态性:是指不同对象在收到相同的消息时,产生不 同的动作用同一个名字定义不同的函数,执行不 同但相似的操作实现 个接口,多种方法 →二、联编的概念及分类 1、联编的概念 联编:源程序经过编译、联接成可执行文件的过 程 即将可执行代码联编(装配)在一起的过程。 联编的分类 静态联编〔前期联编):在运行前完成的联编 在 编译时完成(要求在编译时就知道调用函数的全部信 息)—其优点是“效率高

第一节 多态性及有关概念 一、多态性 ➢多态性:是指不同对象在收到相同的消息时,产生不 同的动作——用同一个名字定义不同的函数,执行不 同但相似的操作——实现“一个接口,多种方法”。 二、联编的概念及分类 1、联编的概念 ➢联编:源程序经过编译、联接成可执行文件的过 程 ——即将可执行代码联编(装配)在一起的过程。 2、联编的分类: ➢静态联编(前期联编):在运行前完成的联编——在 编译时完成(要求在编译时就知道调用函数的全部信 息)——其优点是“效率高”

第一节多态性及有关概念 动态联编(后期联编):在运行时才完成的联编.在程 态调用 活性”、向题的泉性”、程序的另维护性 三、多态性的分类 >编译时多态性:静态联编支持的多态性(静态多态性) 通过函数重载及运算符重载实现。 >运行时多态性:动态联编支持的多态性(动态多态性) 通过虚函数实现。 四、函数重载 同按个类由的回名函数_套数个数不一样、参数类型不 >不同类中的同名函数通过类名调用或类的对象调用。 >同一个类中同名的普通成员函数及常量成员函数通过 cons实现重载

第一节 多态性及有关概念 ➢ 动态联编(后期联编):在运行时才完成的联编——在程 序运行时动态调用所需函数——优点是提供了更好的“灵 活性” 、问题的“抽象性” 、程序的“易维护性” 。 三、多态性的分类 ➢ 编译时多态性:静态联编支持的多态性(静态多态性)— —通过函数重载及运算符重载实现。 ➢ 运行时多态性:动态联编支持的多态性(动态多态性)— —通过虚函数实现。 四、函数重载 ➢ 同一个类中的同名函数——参数个数不一样、参数类型不 一样、参数个数及类型不一样; ➢ 不同类中的同名函数——通过类名调用或类的对象调用。 ➢ 同一个类中同名的普通成员函数及常量成员函数——通过 const实现重载

第〓节运算符载(敵材①P253285) 类以外的运算符重载 例【5.1】分析程序结果,熟悉在类外重载运算符。 #include class complex i public: double real double imag: complex(double r=0, double i=0) freal=r; imag=i; complex operator+(complex col, complex co2) complex temp; temp. real=col real+co2. real; temp. imag=colimag+co2 imag return temp

第二节 运算符重载(教材①P253-285) 一、类以外的运算符重载 例【5.1】分析程序结果,熟悉在类外重载运算符。 #include class complex { public : double real ; double imag; complex(double r=0,double i=0) {real=r;imag=i;} }; complex operator+(complex co1,complex co2) {complex temp; temp.real=co1.real+co2.real; temp.imag=co1.imag+co2.imag; return temp; }

第二节运算符重载(教材P253-285) d main (0 f complex com1(1. 1, 2.2), com2 (3.3, 4.4), totall, total2; totall=operator+(coml, com2); cout complex operator+( complex col, complex co2)为运算 符“+”的重载函数; totall=operator+(coml, com2); total2=com1+com2 yg 运算符重载的两种使用方法

第二节 运算符重载(教材①P253-285) void main() { complex com1(1.1,2.2),com2(3.3,4.4),total1,total2; total1=operator+(com1,com2); cout <<"real1="<<total1.real; cout<<" imag1="<<total1.imag<<endl; total2=com1+com2; cout <<"real2="<<total2.real; cout<<" imag2="<<total2.imag<<endl; } 程序中: ➢ complex operator+(complex co1,complex co2)为运算 符“+”的重载函数; ➢ total1=operator+(com1,com2) ;total2=com1+com2 为 运算符重载的两种使用方法

第〓节运算符载(敵材①P253285) 说明: >在C++中运算符可以通过重载扩充运算符的功能; >运算符重载是通过 operatora(实现的(a表示重载 的运算符:+、-、*、/、>、不能重的运算符有:“.” 9 “#”(预处理符)(教材OP314)

第二节 运算符重载(教材①P253-285) 说明: ➢在C++中运算符可以通过重载扩充运算符的功能; ➢运算符重载是通过operator@( ) 实现的(@表示重载 的运算符:+、-、 * 、/、>、<等)——操作符函数; ➢ 重载运算符不能改变运算符的原有的优先级和运算量 的个数; ➢C++中大多数运算符均能够重载。如:+、-、 * 、/、 %、&、 = 、+=、-= 、&&、||、!、++、[]、new、 delete等; ➢不能重的运算符有:“.” 、“.*” 、“::”、“?:”、 “#”(预处理符)(教材③P314);

第〓节运算符载(敵材①P253285) 二、成员运算符函数 >思考:将上例中的数据成员改为私有成员,程序可执 行吗? 上例中的 complex类中的公有数据成员破坏了封装特 性,如果将其改为私有成员,可以将运算符重载函数 定义为成员函数。 ()成员运算符函数定义 >格式:返回类型横类名:0mmra(爹数表) 函数体} >其中,当为双目运算符时,参数表中为一个参数,单 目运算符时,参数表为空通过this指针传递

第二节 运算符重载(教材①P253-285) 二、成员运算符函数 ➢思考:将上例中的数据成员改为私有成员,程序可执 行吗? ➢上例中的complex类中的公有数据成员破坏了封装特 性,如果将其改为私有成员,可以将运算符重载函数 定义为成员函数。 ㈠ 成员运算符函数定义 ➢格式: ::operator@(参数表) { 函数体 } ➢其中,当为双目运算符时,参数表中为一个参数,单 目运算符时,参数表为空——通过this指针传递

第〓节运算符载(敵材①P253285) (双目运算符的重载 >例【52】重载二个复数对象的加、减、乘、除运算 符熟悉双目运算符的重载 1、分析:设两个复数a+b和c+di,则有: >加法:(a+bi)+(cdi)=(atc)+(b+d)i; >减法:(a+bi)-(c+di)=(a-c)+(b-d)i; >乘法:(a+b)(+di)=ac-bd)(ad+beli )除法:(a+bi)(+di)=(a+bi)*(c-di)(c2+d (ac+bd)/(cl+)+(bc-adi/(c+d) 2、程序

第二节 运算符重载(教材①P253-285) ㈡ 双目运算符的重载 ➢例【5.2】重载二个复数对象的加、减、乘、除运算 符——熟悉双目运算符的重载。 1、分析:设两个复数a+bi和c+di,则有: ➢加法:(a+bi)+(c+di)=(a+c)+(b+d)i; ➢减法:(a+bi)-(c+di)=(a-c)+(b-d)i; ➢乘法:(a+bi)*(c+di)=(ac-bd)+(ad+bc)i ➢除法:(a+bi)/(c+di)=(a+bi)*(c-di)/(c2+d2 ) =(ac+bd)/ (c2+d2 )+(bc-ad)i/(c2+d2 ) 2、程序:

第二节运算符重载(教材P253-285) #include class complex i private double real double imag; public: complex(double r=0, double i=0) Rreal=r; imag=1; void printo complex operator+(complex c); complex operator-(complex c); complex operator*(complex c); complex operator/(complex c)

第二节 运算符重载(教材①P253-285) #include class complex { private : double real ; double imag; public : complex(double r=0,double i=0) {real=r;imag=i;} void print(); complex operator+(complex c); complex operator-(complex c); complex operator*(complex c); complex operator/(complex c); };

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共68页,可试读20页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有