《C++语言程序设计・中国水利水电版》AB第8章:多态性.ppt

《C++语言程序设计・中国水利水电版》AB第8章:多态性.ppt

ID:59412607

大小:260.00 KB

页数:42页

时间:2020-09-19

《C++语言程序设计・中国水利水电版》AB第8章:多态性.ppt_第1页
《C++语言程序设计・中国水利水电版》AB第8章:多态性.ppt_第2页
《C++语言程序设计・中国水利水电版》AB第8章:多态性.ppt_第3页
《C++语言程序设计・中国水利水电版》AB第8章:多态性.ppt_第4页
《C++语言程序设计・中国水利水电版》AB第8章:多态性.ppt_第5页
资源描述:

《《C++语言程序设计・中国水利水电版》AB第8章:多态性.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章多态性AB8.1运算符重载8.2运算符重载为类的成员函数8.3运算符重载为类的友元函数8.4虚函数8.1运算符重载8.1.1问题的提出例6.3的复数类#include"iostream.h"classCComplex{private:doublereal;doubleimag;public:CComplex(doubler,doublei);voidPrint();CComplexAdd(CComplexc);CComplexSub(CComplexc);};第8章多态性CComplexCComplex::Add(CComplexc){CComplex

2、temp;temp.real=real+c.real;temp.imag=imag+c.imag;returntemp;}CComplexCComplex::Sub(CComplexc){CComplextemp;temp.real=real-c.real;temp.imag=imag-c.imag;returntemp;}8.1运算符重载8.1.1问题的提出(续一)voidmain(void){CComplexa(1,2),b(3.0,4.0),c,d;c=a.Add(b);d=a.Sub(b);cout<<"c=";c.Print();cout<<"d=

3、";d.Print();}第8章多态性复数加减法只能调用成员函数实现,不能使用符号“+”和“-”,可以通过重载“+”、“-”运算符,实现如c=a+b这样的调用方式运算符重载:运算符重载的实质就是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时,产生不同的行为。运算符重载的实质就是函数重载。例8.1用运算符实现复数的加减运算#include"iostream.h"classCComplex{private:doublereal;doubleimag;public:CComplex(doubler=0,doublei=0);voidPrint()

4、;CComplexoperator+(CComplexc);CComplexoperator-(CComplexc);};CComplex::CComplex(doubler,doublei){real=r;imag=i;}第8章多态性例8.1(续一)voidCComplex::Print(){cout<<"("<

5、;returntemp;}CComplexCComplex::operator-(CComplexc){CComplextemp;temp.real=real-c.real;temp.imag=imag-c.imag;returntemp;}第8章多态性例8.1(续二)voidmain(void){CComplexa(1,2),b(3.0,4.0),c,d;c=a+b;d=a-b;cout<<"c=";c.Print();cout<<"d=";d.Print();}第8章多态性该语句相当于对函数operator+(CComplexc)的调用:“c=a.ope

6、rator+(b)”,实现两个复数的加法运算。程序运行结果为:c=(4,6)d=(-2,-2)8.1运算符重载8.1.2运算符重载的格式与规则1.运算符重载的格式运算符重载为类的成员函数运算符重载为类的友元函数运算符重载的为类的成员函数,在类中声明的格式为:函数类型operator运算符(参数表);定义该函数的格式:函数类型类名::operator运算符(参数表){函数体;}也可以将重载运算符函数的定义直接写在类中。第8章多态性8.1运算符重载8.1.2运算符重载的格式与规则(续)2.运算符重载的规则(1)除“.”、“*”、“::”、“?:”和“sizeof

7、”等几个运算符不能重载外,C++中几乎所有的运算符都可以重载。(2)运算符被重载后,其优先级和结合性不会改变。(3)不能改变运算符操作对象的个数。第8章多态性返回8.2运算符重载为类的成员函数8.2.1双目运算符重载双目运算符,如果重载为类的成员函数,其参数为一个,即比运算对象少一个。例8.2复数的乘法运算,在上例的基础上添加乘法运算符重载函数。复数类乘法运算的定义如下:(a+bi)*(x+yi)=a*x-b*y+(a*y+b*x)i第8章多态性例8.2复数乘法运算源程序#include"iostream.h"classCComplex{private:do

8、ublereal;doubleimag;public

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

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

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