预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共24页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

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

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