- 1、本文档共69页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C第十章运算符重载
第10章 运算符重载;函数重载就是对一个已有的函数赋予新的含义,使之实现新功能。
用户能根据自己的需要对C++已提供的运算符进行重载,赋予它们新的含义,使之一名多用。
例如10.1 :用“+”号进行两个复数的相加。在C++中不能在程序中直接用运算符“+”对复数进行相加运算。用户必须自己设法实现复数相加。;例10.1 通过函数来实现复数相加。
#include iostream
using namespace std;
class Complex //定义Complex类
{public:
Complex( ){real=0;imag=0;} //定义构造函数
Complex(double r,double i){real=r;imag=i;} //构造函数重载
Complex complex_add(Complex c2); //声明复数相加函数
void display( ); //声明输出函数
private:
double real; //实部
double imag; //虚部
};
Complex Complex∷complex_add(Complex c2)
{Complex c;
c.real=real+c2.real;;c.imag=imag+c2.imag;
return c;}
void Complex∷display( ) //定义输出函数
{cout″(″real″,″imag″i)″endl;}
int main( )
{Complex c1(3,4),c2(5,-10),c3; //定义3个复数对象
c3=plex_add(c2); //调用复数相加函数
cout″c1=″; c1.display( ); //输出c1的值
cout″c2=″; c2.display( ); //输出c2的值
cout″c1+c2=″; c3.display( ); //输出c3的值
return 0;
}
运行结果如下:
c1=(3,4i)
c2=(5,-10i)
c1+c2=(8,-6i);运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。重载运算符的函数一般格式如下:
函数类型 operator 运算符名称 (形参表列)
{ 对运算符的重载处理 }
例如,想将“+”用于Complex类(复数)的加法运算,函数的原型可以是这样的:
Complex operator+ (Complex c1,Complex c2);;在定义了重载运算符的函数后,可以说:函数
operator+重载了运算符+。为了说明在运算符重载后,执行表达式就是调用函数的过程,可以把两个整数相加也想像为调用下面的函数:
int operator + (int a,int b)
{return (a+b);}
如果有表达式5+8,就调用此函数,将5和8作为调用函数时的实参,函数的返回值为13。这就是用函数的方法理解运算符。;例10.2 改写例10.1,重载运算符“+”,使之能用于两个复数相加。
#include iostream
using namespace std;
class Complex
{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;
};
Complex Complex∷operator+(Complex c2) //定义重载运算符的函数
{ Complex c;
c.real=real+c2.real;
c.imag=imag+c2.imag;;return c;}
void Complex∷display( )
{ cout″(″real″,″imag″i)″endl;
文档评论(0)