c++谭浩强的一段话怎么理解呢..我不懂它的前因后果

如下面的描述,我对它的因果关系没有搞明白,请问为什么就不能是成员函数了呢对“<<”和“>>”重载的函数形式如下:istream&operator>>(istream&,自... 如下面的描述,我对它的因果关系没有搞明白,请问为什么就不能是成员函数了呢

对“<<”和“>>”重载的函数形式如下:
istream & operator >> (istream &,自定义类 &);
ostream & operator << (ostream &,自定义类 &);
即重载运算符“>>”的函数的第一个参数和函数的类型都必须是istream&类型,第二个参数是要进行输入操作的类。重载“<<”的函数的第一个参数和函数的类型都必须是ostream&类型,第二个参数是要进行输出操作的类。因此,只能将重载“>>”和“<<”的函数作为友元函数或普通的函数,而不能将它们定义为成员函数
展开
 我来答
zzu_liuwei
2012-02-11 · TA获得超过372个赞
知道小有建树答主
回答量:200
采纳率:0%
帮助的人:222万
展开全部
首先,运算符重载实质上是函数重载,比如operator+(int i)编译器解释为调用某类(假如stu)的成员函数stu.operator+(),所以要求第一个(左侧的)参数必须为该类的对象,否则没法调用成员函数
其次,运算符“>>”“<<”要求函数的第一个参数和函数的类型都必须是istream&和ostream&类型,这是因为要连续输出时要求的,谭浩强书里有讲到
所以不能把他们重载为成员函数,只能重载为友元函数或普通函数。
百度网友c2a621b0f
2012-02-11 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:92.1万
展开全部
如果要写成类成员函数的话,那么这两个操作符是istream和ostream的类成员函数,意味着要修改标准库。

定义为友元函数的作用是为了可以访问输出时需要的自定义类中的私有成员。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
FAR0001
2012-02-12 · 超过25用户采纳过TA的回答
知道答主
回答量:86
采纳率:0%
帮助的人:67.1万
展开全部
定义为成员函数的话,是不需要两个参数的;具体调用的时候调用它的对象本身 就是一个参数;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式