一、实验目的
学习掌握重定义与类有关的运算符。
在设计一个新的类时,其实是将一个新的数据类型引入到c++中,对于新的数据类型的操作需要重新定义,而不能直接应用一些系统预先定义好的操作符。
把握重载运算符的时机。
二、实验内容
生成一个表示复数的类FS。复数的实部sb和虚部xb作为其数据成员。提供成员函数disp()显示复数,重载“+”,“一”,“×”,“/”为FS类的成员函数,用来计算两个复数的和、差、积、商。
利用重载的运算符计算下列各式:
(8+3i)+(7-4i);
(9+3i)-(4+2i);
(4+6i)*(2+3i);
(7+4i)/(2+1i)。
#include<iostream>
using namespace std;
class FS{
double sb,xb;
public:
FS(double a=0.0,double b=0.0)
{
sb=a;
xb=b;
}
void disp()
{
cout<<"["<<sb<<"+"<<"("<<xb<<"*i"<<")"<<"]";
}
FS operator+(FS &);
FS operator-(FS &);
FS operator*(FS &);
FS operator/(FS &);
};
FS FS::operator+(FS &f)
{
FS g;
g.sb=sb+f.sb;
g.xb=xb+f.xb;
return g;
}
FS FS::operator-(FS &f)
{
FS g;
g.sb=sb-f.sb;
g.xb=xb-f.xb;
return g;
}
FS FS::operator*(FS &f)
{
FS g;
g.sb=sb*f.sb-xb*f.xb;
g.sb=sb*f.sb+xb*f.xb;
return g;
}
FS FS::operator/(FS &f)
{
FS g;
g.sb=(sb*f.sb+xb*f.xb)/(f.sb*f.sb+f.xb*f.xb);
g.xb=(xb*f.sb-sb*f.xb)/(f.sb*f.sb+f.xb*f.xb);
return g;
}
int main()
{
FS a1(8,3),a2(7,-4),b1(9,3),b2(4,2),c1(4,6),c2(2,3),d1(7,4),d2(2,1);
FS q1,q2,q3,q4;
q1=a1+a2;
a1.disp();
cout<<"+";
a2.disp();
cout<<"=";
q1.disp();
cout<<endl;
q2=b1-b2;
b1.disp();
cout<<"-";
b2.disp();
cout<<"=";
q2.disp();
cout<<endl;
q3=c1*c2;
c1.disp();
cout<<"*";
c2.disp();
cout<<"=";
q3.disp();
cout<<endl;
q4=d1/d2;
d1.disp();
cout<<"/";
d2.disp();
cout<<"=";
q4.disp();
cout<<endl;
return 0;
}