C++ (用友元函数重载运算符)

ami24 2009-05-18 10:28:51
我是想重载<<运算符,要求能直接输出如下格式:
3.15+2.78;
3.15-2.78;
3.15;
此三种情况,以下是我写的关于该重载<<运算符的代码,但是运行结果始终是:3.15-0i;
friend ostream & operator << (ostream &out,complex &obj)
{
out<<obj.real;
if(obj.image=0)
out<<"虚部值为0";
else if (obj.image>0)
{

out<<"+";
out<<obj.image;
out<<"i";
}
else

out<<"i";
}
return out;

}
但这只是做如下改动就可行了,为什么呢?我没有注意到什么知识点?请帮忙指点哈,谢谢
friend ostream & operator << (ostream &out,complex &obj)
{
out<<obj.real;
if(obj.image >0)
out<<"+";//<<obj.image <<"i";双重输出虚部了
if(obj.image !=0)
out<<obj.image <<"i";//除了正数要加上+号之外 其余的按照原样输出
return out;
}
...全文
327 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ami24 2009-05-25
  • 打赏
  • 举报
回复
谢谢^ 怎么自己老是犯这样的错误……[Quote=引用 3 楼 arong1234 的回复:]
C/C++判断相等是==,不是=,if(obj.image=0)导致obj.image被赋值为0了,所以错了
[/Quote]
qizhao2001 2009-05-19
  • 打赏
  • 举报
回复
out < <"+";
out < <obj.image;
out < <"i"; // 错了 out < <i
pathuang68 2009-05-19
  • 打赏
  • 举报
回复
ztenv 版主 2009-05-19
  • 打赏
  • 举报
回复
friend ostream & operator < < (ostream &out,complex &obj)
{
out < <obj.real;
if(obj.image==0) //这里修改
out < <"虚部值为0";
else if (obj.image>0)
{

out < <"+";
out < <obj.image;
out < <"i";
}
else

out < <"i";
}
return out;
/////代码有点乱了,可以再优化一下代码结构
}
Jalien 2009-05-19
  • 打赏
  • 举报
回复
up[Quote=引用 3 楼 arong1234 的回复:]
C/C++判断相等是==,不是=,if(obj.image=0)导致obj.image被赋值为0了,所以错了
[/Quote]
wanglc08 2009-05-18
  • 打赏
  • 举报
回复

C/C++判断相等是==,不是=,if(obj.image=0)导致obj.image被赋值为0了,所以错了

liliangbao 2009-05-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 arong1234 的回复:]
C/C++判断相等是==,不是=,if(obj.image=0)导致obj.image被赋值为0了,所以错了
[/Quote]
正解~
huizhouxueyuan 2009-05-18
  • 打赏
  • 举报
回复
楼上和楼上的楼上都是正解!
o0MyBelieve0o 2009-05-18
  • 打赏
  • 举报
回复
mark
jiachao1989 2009-05-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 arong1234 的回复:]
C/C++判断相等是==,不是=,if(obj.image=0)导致obj.image被赋值为0了,所以错了
[/Quote]
UP!!!!
arong1234 2009-05-18
  • 打赏
  • 举报
回复
C/C++判断相等是==,不是=,if(obj.image=0)导致obj.image被赋值为0了,所以错了
s_xgwang 2009-05-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 ami24 的帖子:]
我是想重载 < <运算符,要求能直接输出如下格式:
3.15+2.78;
3.15-2.78;
3.15;
此三种情况,以下是我写的关于该重载 < <运算符的代码,但是运行结果始终是:3.15-0i;
friend ostream & operator < < (ostream &out,complex &obj)
{
out < <obj.real;
if(obj.image=0)
~~~~~~~~~~~~~~~~~~~~ if(obj.image==0)

out < <"虚部值为0";
else if (obj.image>0)
{

out < <"+";
out < <obj.image;
out < <"i";
}
else

ou…
[/Quote]
~~~~~~~~
lzh9955 2009-05-18
  • 打赏
  • 举报
回复
不太明白,顶!

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧