c++流运算符重载~

pop1210 2009-03-25 02:13:48
以>>为例,通常都是这样定义:
friend istream& operator>>(istream input&,Myclass & my);
我的问题是:
1:定义为类成员函数怎么不行?报错: error C2804: 二进制“operator <<”的参数太多,不定义为friend的可以么?
2:直接[friend] istream& operator>>(Myclass & my){... ;return cin;};不行怎么?报错:error C2805: 二进制“operator <<”的参数太少
为什么还要传个istream&,
刚学c++,很多地方不懂,msdn又看不懂,望高手指点一二...
...全文
190 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pop1210 2009-05-02
  • 打赏
  • 举报
回复
这种问题先记着,结贴了.
pop1210 2009-03-25
  • 打赏
  • 举报
回复
先谢谢1楼~!

=>"传istream& 是因为流对象不可复制. "不明白,能不能详细说下啊?

还有为什么在自己重载的>>函数里就不能用cin/cout啦,除非传进来istream/ostream这样的引用.

我只想用这两个对象,就和在main或其他地方用一样,为啥就不行??
bao001001 2009-03-25
  • 打赏
  • 举报
回复
请楼主贴到C++论坛
pengzhixi 2009-03-25
  • 打赏
  • 举报
回复

1:定义为类成员函数怎么不行?
如果定义为类成员函数,那么>>这操作符号的左操作数就为*this 对象了。

2:直接[friend] istream& operator>>(Myclass & my){... ;return cin;};不行怎么?报错:error C2805: 二进制“operator < <”的参数太少
为什么还要传个istream&,

传istream& 是因为流对象不可复制.

65,211

社区成员

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

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