运算符重载的语法一元运算符二元运算符的重载.ppt
上传人:天马****23 上传时间:2024-09-11 格式:PPT 页数:24 大小:1MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

运算符重载的语法一元运算符二元运算符的重载.ppt

运算符重载的语法一元运算符二元运算符的重载.ppt

预览

免费试读已结束,剩余 14 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Complex(constComplex&c){realpart=c.realpart;imagpart=c.imagpart;}Complex(doublec){realpart=(double)c;imagpart=0;}//取复数的实部和虚部doublereal(){returnrealpart;}doubleimag(){returnimagpart;}//算术运算符重载为成员函数Complexoperator+(constComplex&);Complexoperator-(constComplex&);Complexoperator*(constComplex&);Complexoperator/(constComplex&);//赋值运算符重载为成员函数Complex&operator=(constComplex&);//关系运算符重载为成员函数booloperator==(constComplex&);booloperator!=(constComplex&);//显示复数voidDisplay();private:doublerealpart;doubleimagpart;};#endif这个复数类定义了复数的+、-、*、/、==、!=等各项操作。//算术运算符重载为友元函数friendComplexoperator+(constComplex&,constComplex&);friendComplexoperator-(constComplex&,constComplex&);……运算符例7-2类成员函数的实现:CTestCTest::operator+()const{CTesttemp(data);//不变returntemp;}CTestCTest::operator-()const{CTesttemp(-data);//变号returntemp;}CTest&CTest::operator=(constCTest&c){if(this==&c)return*this;//如果是本对象对自己赋值,直接返回data=c.data;return*this;}constCTestoperator~(constCTest&c){CTesttemp(~c.data);//取反returntemp;}constCTestoperator!(constCTest&c){CTesttemp(!c.data);//取非returntemp;}//测试程序intmain(){CTestc(5);c.show();c=+c;c.show();c=-c;c.show();c=~c;c.show();c=!c;c.show();return0;}如果二元运算符被重载为友元函数,那么进行计算所需要的两个数据都要出现在函数的参数列表中,函数实现过程中直接使用它们进行计算并返回结果就可以了。如:Complexoperator+(constComplex&c1,constComplex&c2){Complexc3(c1.realpart+c2.realpart,c1.imagpart+c2.imagpart);returnc3;}CTestoperator--();//前缀CTestoperator--(int);//后缀voidDisplay()const;};//类成员函数的实现CTest::CTest(inta,intb){t1=a;t2=b;}CTestCTest::operator++(){cout<<"++test\n";t1++;t2++;return*this;}CTestCTest::operator++(int){cout<<"test++\n";inttmp1=t1;inttmp2=t2;t1++;t2++;returnCTest(tmp1,tmp2);}CTestCTest::operator--(){cout<<"--test\n";--t1;--t2;return*this;}CTestCTest::operator--(int){cout<<"test--\n";inttmp1=t1;inttmp2=t2;--t1;--t2;returnCTest(tmp1,tmp2);}voidCTest::Display()const{cout<<"("<<t1<<","<<t