
c++重载运算符>><<出现问题
>>,<<运算符重载输入的数为什么输出时有错,调试无错?#include<iostream.h>classcomplex{private:floatreal,image;...
>>,<<运算符重载输入的数为什么输出时有错,调试无错?
#include<iostream.h>
class complex
{
private:
float real,image;
public:
complex(float r=0,float i=0){ real=r;image=i;}
friend ostream &operator<<(ostream&s,complex c)
{
s<<c.real<<"+";
s<<c.image<<"i"<<endl;
return s;
}
friend istream &operator>>(istream&s,complex c)
{
s>>c.real;
s>>c.image;
return s;
}
};
void main()
{
complex a,b;
cin>>a>>b;
cout<<a<<b;
} 展开
#include<iostream.h>
class complex
{
private:
float real,image;
public:
complex(float r=0,float i=0){ real=r;image=i;}
friend ostream &operator<<(ostream&s,complex c)
{
s<<c.real<<"+";
s<<c.image<<"i"<<endl;
return s;
}
friend istream &operator>>(istream&s,complex c)
{
s>>c.real;
s>>c.image;
return s;
}
};
void main()
{
complex a,b;
cin>>a>>b;
cout<<a<<b;
} 展开
1个回答
展开全部
friend istream &operator>>(istream&s,complex c)这里如果complex c,c的前面不加&的话在子函数里修改的值不能传到c里。只是简单的传值调用而已。
friend ostream &operator<<(ostream&s,complex c)这个子函数不知道你要干什么但估计是要输出两个数值的和,所以帮你进行了以下修改。
#include<iostream.h>
class complex
{
private:
float real,image;
public:
complex(float r=0,float i=0){ real=r;image=i;}
friend ostream &operator<<(ostream&s,complex c)
{
s<<c.real<<"+";
s<<c.image<<"="<<c.image+c.real<<endl;
return s;
}
friend istream& operator>>(istream& s,complex &c)
{
s>>c.real;
s>>c.image;
return s;
}
};
void main()
{
complex a,b;
cin>>a>>b;
cout<<a<<b;
}
friend ostream &operator<<(ostream&s,complex c)这个子函数不知道你要干什么但估计是要输出两个数值的和,所以帮你进行了以下修改。
#include<iostream.h>
class complex
{
private:
float real,image;
public:
complex(float r=0,float i=0){ real=r;image=i;}
friend ostream &operator<<(ostream&s,complex c)
{
s<<c.real<<"+";
s<<c.image<<"="<<c.image+c.real<<endl;
return s;
}
friend istream& operator>>(istream& s,complex &c)
{
s>>c.real;
s>>c.image;
return s;
}
};
void main()
{
complex a,b;
cin>>a>>b;
cout<<a<<b;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询