欢迎来到天天文库
浏览记录
ID:59448048
大小:165.00 KB
页数:52页
时间:2020-09-18
《C++面向对象程序设计教程 第4章 运算符重载ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章运算符重载4.1运算符重载的概念运算符重载的概念C++语言允许重新定义已有的运算符,使其完成一些只在该特定类中使用的特定操作,这就是运算符重载如用加法“+”运算符进行两个复数的相加。若有z1=2+3i,z2=4-8i,在数学中,可直接用“+”实现z3=z1+z2,也就是将z1和z2的实部和虚部分别相加,z3=2+4+(3-8)i=6-5i。这时必须实现复数相加。比如用户可以通过定义一个函数来实现复数相加例4.1通过函数实现复数相加示例。//声明复数数classComplex{private://数据成员doublere
2、al;//实部doubleimage;//虚部public://公有函数Complex(doubler=0,doublei=0):real(r),image(i){}//构造函数voidShow()const;//输出复数staticComplexAdd(constComplex&z1,constComplex&z2);//复数加法};voidComplex::Show()const//输出复数{if(image<0)cout<3、t<4、Show();//输出z1z2.Show();//输出z2z3=Complex::Add(z1,z2);//z3=z1+z2z3.Show();//输出z3system("PAUSE");//输出系统提示信息return0;//返回值0,返回操作系统}程序运行时屏幕输出如下:2+3i6-5i8-2i请按任意键继续...在Add()函数体中的两行代码可以用“returnComplex(z1.real+z2.real,z1.image+z2.image);”代替,“Complex(z1.real+z2.real,z1.image5、+z2.image)”的含义是建立一个临时复数对象,它的实部为z1.real+z2.real,虚部为z1.image+z2.image,在建立临时对象的过程中调用了构造函数,语句return将此临时对象作为函数的返回值。运算符重载能否像实数的加法运算一样,直接用加号“+”来实现复数运算呢?例如在程序中直接用“z3=z1+z2”进行运算,这需要对运算符“+”进行重载。运算符重载的方法在实质上就是定义一个重载运算符的函数,在执行被重载的运算符时,系统将调用此函数实现相应的运算。运算符重载本质就是函数的重载。重载运算符的函数的原型6、如下:返回值类型operator运算符(形参表);例如将“+”用于Complex类的加法运算运算符重载的函数原型可以为:Complexoperator+(constComplex&z1,constComplex&z2);例4.2通过运算符重载实现复数相加的示例。#include//编译预处理命令usingnamespacestd;//使用命名空间std//声明复数数classComplex{private://数据成员doublereal;//实部doubleimage;//虚部public://公有函数7、Complex(doubler=0,doublei=0):real(r),image(i){}//构造函数voidShow()const;//输出复数friendComplexoperator+(constComplex&z1,constComplex&z2){returnComplex(z1.real+z2.real,z1.image+z2.image);}};voidComplex::Show()const//输出复数{if(image<0)cout<8、f(image==0)cout<
3、t<4、Show();//输出z1z2.Show();//输出z2z3=Complex::Add(z1,z2);//z3=z1+z2z3.Show();//输出z3system("PAUSE");//输出系统提示信息return0;//返回值0,返回操作系统}程序运行时屏幕输出如下:2+3i6-5i8-2i请按任意键继续...在Add()函数体中的两行代码可以用“returnComplex(z1.real+z2.real,z1.image+z2.image);”代替,“Complex(z1.real+z2.real,z1.image5、+z2.image)”的含义是建立一个临时复数对象,它的实部为z1.real+z2.real,虚部为z1.image+z2.image,在建立临时对象的过程中调用了构造函数,语句return将此临时对象作为函数的返回值。运算符重载能否像实数的加法运算一样,直接用加号“+”来实现复数运算呢?例如在程序中直接用“z3=z1+z2”进行运算,这需要对运算符“+”进行重载。运算符重载的方法在实质上就是定义一个重载运算符的函数,在执行被重载的运算符时,系统将调用此函数实现相应的运算。运算符重载本质就是函数的重载。重载运算符的函数的原型6、如下:返回值类型operator运算符(形参表);例如将“+”用于Complex类的加法运算运算符重载的函数原型可以为:Complexoperator+(constComplex&z1,constComplex&z2);例4.2通过运算符重载实现复数相加的示例。#include//编译预处理命令usingnamespacestd;//使用命名空间std//声明复数数classComplex{private://数据成员doublereal;//实部doubleimage;//虚部public://公有函数7、Complex(doubler=0,doublei=0):real(r),image(i){}//构造函数voidShow()const;//输出复数friendComplexoperator+(constComplex&z1,constComplex&z2){returnComplex(z1.real+z2.real,z1.image+z2.image);}};voidComplex::Show()const//输出复数{if(image<0)cout<8、f(image==0)cout<
4、Show();//输出z1z2.Show();//输出z2z3=Complex::Add(z1,z2);//z3=z1+z2z3.Show();//输出z3system("PAUSE");//输出系统提示信息return0;//返回值0,返回操作系统}程序运行时屏幕输出如下:2+3i6-5i8-2i请按任意键继续...在Add()函数体中的两行代码可以用“returnComplex(z1.real+z2.real,z1.image+z2.image);”代替,“Complex(z1.real+z2.real,z1.image
5、+z2.image)”的含义是建立一个临时复数对象,它的实部为z1.real+z2.real,虚部为z1.image+z2.image,在建立临时对象的过程中调用了构造函数,语句return将此临时对象作为函数的返回值。运算符重载能否像实数的加法运算一样,直接用加号“+”来实现复数运算呢?例如在程序中直接用“z3=z1+z2”进行运算,这需要对运算符“+”进行重载。运算符重载的方法在实质上就是定义一个重载运算符的函数,在执行被重载的运算符时,系统将调用此函数实现相应的运算。运算符重载本质就是函数的重载。重载运算符的函数的原型
6、如下:返回值类型operator运算符(形参表);例如将“+”用于Complex类的加法运算运算符重载的函数原型可以为:Complexoperator+(constComplex&z1,constComplex&z2);例4.2通过运算符重载实现复数相加的示例。#include//编译预处理命令usingnamespacestd;//使用命名空间std//声明复数数classComplex{private://数据成员doublereal;//实部doubleimage;//虚部public://公有函数
7、Complex(doubler=0,doublei=0):real(r),image(i){}//构造函数voidShow()const;//输出复数friendComplexoperator+(constComplex&z1,constComplex&z2){returnComplex(z1.real+z2.real,z1.image+z2.image);}};voidComplex::Show()const//输出复数{if(image<0)cout<8、f(image==0)cout<
8、f(image==0)cout<
此文档下载收益归作者所有