欢迎来到天天文库
浏览记录
ID:38341658
大小:715.31 KB
页数:47页
时间:2019-06-10
《面向对象编程技术第八章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章多态问题的提出多态在本章的表现形式总结与建议去工作吧去工作吧去工作吧去工作吧头说:大家去工作吧1.多态定义:不同类型的对象接收同样的消息产生不同的行为2.现实需要多态;面向对象需要多态:它以归整划一的方式在特定时刻处理多个类型不同的对象返回运算符重载虚函数抽象类-纯虚函数多态在本章主要的表现形式返回运算符重载设计思想运算符重载的基本形式运算符重载的实例注意事项返回运算符重载设计思想扩展系统已有运算符的功能,能处理自定义数据类型定义与特定运算符同名的函数此函数与类相关联(成员或友元)以函数处理特定的自定义数据类型C++系统
2、通过函数重载的方式来定位、执行此特殊函数返回运算符重载分类运算符重载按载体类的成员函数类的友元函数按对象个数重载单目运算符:前置与后置重载双目运算符返回可以重载为普通函数吗?看完所有例子再回答,呵呵!重载分类之一重载为类成员函数参数个数=原操作数个数-1(后置++、--除外)重载为友元函数参数个数=原操作数个数,且至少应该有一个自定义类型的形参要理解参数个数的原因格式重载为类成员函数格式:函数类型operator运算符(形参){......}重载为友元函数格式friendly函数类型operator运算符(形参){......
3、}返回Operator:重载关键字重载分类之二单目运算符前置单目运算符:Uoprd无形参,表达式Uoprd相当于oprd.operatorU()后置单目运算符oprdU有一个int类型形参表达式oprd++相当于oprd.operator++(0)oprd为特定的对象重载分类之二oprd1、oprd2为特定类的对象双目运算符B:重载后:表达式oprd1Boprd2相当于oprd1.operatorB(oprd2)返回重载举例1-用“+”、“-”能够实现复数的加减运算classcomplex{public:complex(dou
4、bler=0.0,doublei=0.0){real=r;imag=i;}friendcomplexoperator+(complexc1,complexc2);//重载为友元函数complexoperator-(complexc1);//重载为成员函数voiddisplay();//显示复数的值private://私有数据成员doublereal;doubleimag;};跳回complexoperator+(complexc1,complexc2)//运算符重载友元函数实现{returncomplex(c2.real+c1
5、.real,c2.imag+c1.imag);}complexcomplex::operator-(complexc1)//运算符重载成员函数实现{returncomplex(real-c1.real,imag-c1.imag);}voidcomplex::display(){cout<<"("<6、.display();cout<<"c2=";c2.display();c3=c1-c2;//使用重载运算符完成复数减法cout<<"c3=c1-c2=";c3.display();c3=c1+c2;//使用重载运算符完成复数加法cout<<"c3=c1+c2=";c3.display();}程序运行结果:c1=(5,4)c2=(2,10)c3=c1-c2=(3,-6)c3=c1+c2=(7,14)请看一个对此例改装的例子补充例子#include"iostream.h"structcomplex{doublereal;doub7、leimag;//friendcomplexoperator+(complexc1,complexc2);};//complexoperator+(complexc1,complexc2);//重载为友元函数complexoperator+(complexc1,complexc2){complexc3;c3.imag=c1.imag+c2.imag;c3.real=c1.real+c2.real;returnc3;}voidmain()//主函数{complexc1,c2,c3;//声明复数结构体变量c1.imag=1;c2.8、imag=2;c1.real=3;c2.real=4;c3=c1+c2;//使用重载运算符完成复数加法cout<<"c3=c1+c2"<
6、.display();cout<<"c2=";c2.display();c3=c1-c2;//使用重载运算符完成复数减法cout<<"c3=c1-c2=";c3.display();c3=c1+c2;//使用重载运算符完成复数加法cout<<"c3=c1+c2=";c3.display();}程序运行结果:c1=(5,4)c2=(2,10)c3=c1-c2=(3,-6)c3=c1+c2=(7,14)请看一个对此例改装的例子补充例子#include"iostream.h"structcomplex{doublereal;doub
7、leimag;//friendcomplexoperator+(complexc1,complexc2);};//complexoperator+(complexc1,complexc2);//重载为友元函数complexoperator+(complexc1,complexc2){complexc3;c3.imag=c1.imag+c2.imag;c3.real=c1.real+c2.real;returnc3;}voidmain()//主函数{complexc1,c2,c3;//声明复数结构体变量c1.imag=1;c2.
8、imag=2;c1.real=3;c2.real=4;c3=c1+c2;//使用重载运算符完成复数加法cout<<"c3=c1+c2"<
此文档下载收益归作者所有