下载此文档

第10章 运算符重载.ppt


文档分类:IT计算机 | 页数:约78页 举报非法文档有奖
1/78
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/78 下载此文档
文档列表 文档介绍
第10章运算符重载
什么是运算符重载
运算符重载的方法
重载运算符的规则
运算符重载函数作为类成员函数和友元函数
重载双目运算符
重载单目运算符
重载流插入运算符和流提取运算符
不同类型数据间的转换
所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能。
运算符也可以重载。实际上,我们已经在不知不觉之中使用了运算符重载。
现在要讨论的问题是: 用户能否根据自己的需要对C++已提供的运算符进行重载,赋予它们新的含义,使之一名多用。譬如,能否用“+”号进行两个复数的相加。在C++中不能在程序中直接用运算符“+”对复数进行相加运算。用户必须自己设法实现复数相加。例如用户可以通过定义一个专门的函数来实现复数相加。。
什么是运算符重载
通过函数来实现复数相加。
#include <iostream>
using namespace std;
plex //plex类
{public:
Complex( ){real=0;imag=0;} //plex(double r,double i){real=r;imag=i;} //plex &c2); //声明复数相加函数
void display( ); //声明输出函数
private:
double real; //实部
double imag; //虚部
};
plex &c2)
{Complex c;
=real+;
=imag+;
return c;}
plex∷display( ) //定义输出函数
{cout<<″(″<<real<<″,″<<imag<<″i)″<<endl;}
int main( )
{Complex c1(3,4),c2(5,-10),c3; //定义3个复数对象
c3=plex_add(c2); //调用复数相加函数
cout<<″c1=″; ( ); //输出c1的值
cout<<″c2=″; ( ); //输出c2的值
cout<<″c1+c2=″; ( ); //输出c3的值
return 0;
}
运行结果如下:
c1=(3+4i)
c2=(5-10i)
c1+c2=(8,-6i)
结果无疑是正确的,但调用方式不直观、太烦琐,使人感到很不方便。能否也和整数的加法运算一样,直接用加号“+”来实现复数运算呢?如
c3=c1+c2;
编译系统就会自动完成c1和c2两个复数相加的运算。如果能做到,就为对象的运算提供了很大的方便。这就需要对运算符“+”进行重载。
运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。也就是说,运算符重载是通过定义函数实现的。运算符重载实质上是函数的重载。
重载运算符的函数一般格式如下:
函数类型 operator 运算符名称(形参表列)
{ 对运算符的重载处理}
例如,想将“+”plex类(复数)的加法运算,函数的原型可以是这样的:
Complex operator+ (Complex& plex& c2);
运算符重载的方法
在定义了重载运算符的函数后,可以说: 函数operator+重载了运算符+。
为了说明在运算符重载后,执行表达式就是调用函数的过程,可以把两个整数相加也想像为调用下面的函数:
int operator + (int a,int b)
{return (a+b);}
如果有表达式5+8,就调用此函数,将5和8作为调用函数时的实参,函数的返回值为13。这就是用函数的方法理解运算符。
“+”,使之用于复数相加。
,重载运算符“+”,使之能用于两个复数相加。
#include <iostream>
using namespace std;
plex
{public:
Complex( ){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}
Complex operator+(Complex &c2); //声明重载运算符的函数
void display( );
private:
double real;
double imag;
};
plex∷operator+(Complex &c2) //定义重载运算符的函数
{ Complex c;
=real+;
=imag+

第10章 运算符重载 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数78
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小猪猪
  • 文件大小0 KB
  • 时间2011-12-02