问题遇到的现象
想要直接输出复数的四则运算,直接输出复数没有问题。
问题相关代码
1.重载输出函数
ostream &operator<<(ostream &out, Plural &p)
{
out<<"{"<<p.real;
if(p.image>0)
out<<"+";
out<<p.image<<"i"<<"}";
return out;
}
2.重载加法运算
Plural operator+(Plural a,Plural b)
{
Plural c;
c.real=a.real+b.real;
c.image=a.image+b.image;
return c;
}
3.主函数
int main()
{
Plural a,b;
cin>>a;
cin>>b;
cout<<a<<endl;
cout<<b<<endl;
cout<<(a+b)<<endl;
// cout<<a-b<<endl;
// cout<<a*b<<endl;
// cout<<a/b<<endl;
return 0;
}
总的代码
#include<iostream>
using namespace std;
class Plural{
public:
int real,image;
Plural(int a1,int b1)
{
a1=real;
b1=image;
}
Plural()
{
}
friend ostream &operator<<(ostream &out,Plural &p);
friend istream &operator>>(istream &in,Plural &p);
friend Plural operator-(Plural a,Plural b);
friend Plural operator+(Plural a,Plural b);
friend Plural operator*(Plural a,Plural b);
friend Plural operator/(Plural a,Plural b);
};
ostream &operator<<(ostream &out, Plural &p)
{
out<<"{"<<p.real;
if(p.image>0)
out<<"+";
out<<p.image<<"i"<<"}";
return out;
}
istream &operator>>(istream &in,Plural &p)
{
in>>p.real;
in>>p.image;
return in;
}
Plural operator-(Plural a,Plural b)
{
Plural c;
c.real=a.real-b.real;
c.image=a.image-b.image;
return c;
}
Plural operator+(Plural a,Plural b)
{
Plural c;
c.real=a.real+b.real;
c.image=a.image+b.image;
return c;
}
Plural operator*(Plural a,Plural b)
{
Plural c;
c.real=a.real*b.real-a.image*b.image;
c.image=a.real*b.image+a.image*b.real;
return c;
}
Plural operator/(Plural a,Plural b)
{
int d;
d=b.real*b.real-b.image*b.image;
Plural c;
c.real= (a.real*b.real-a.image*b.image)/d;
c.image=(a.real*b.image+a.image*b.real)/d;
}
int main()
{
Plural a,b;
cin>>a;
cin>>b;
cout<<a<<endl;
cout<<b<<endl;
// cout<<(a+b)<<endl;
// cout<<a-b<<endl;
// cout<<a*b<<endl;
// cout<<a/b<<endl;
return 0;
}
运行结果及报错内容
- 输出单个复数(正常)
- 输出复数的加(报错)
我想要达到的结果
怎么样通过重载运算符来输出两个复数的和,不能添加第三个变量。