码迷,mamicode.com
首页 > 其他好文 > 详细

为什么operator<<>>运算符重载一定要为友元函数呢?

时间:2015-06-11 21:14:56      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:c++

如果是重载双目操作符(即为类的成员函数),就只要设置一个参数作为右侧运算量,而左侧运算量就是对象本身。。。。。。

而 >>  或<< 左侧运算量是 cin或cout 而不是对象本身,所以不满足后面一点。。。。。。。。就只能申明为友元函数了。。。

如果一定要声明为成员函数,只能成为如下的形式:

ostream & operator<<(ostream &output)

{

  return output;

}

所以在运用这个<<运算符时就变为这种形式了:data<<cout;

不合符人的习惯。


运算符重载函数可以作为成员函数,友元函数,普通函数。

普通函数:一般不用,通过类的公共接口间接访问私有成员。

成员函数:可通过this指针访问本类的成员,可以少写一个参数,但是表达式左边的第一个参数必须是类对象,通过该类对象来调用成员函数。

友元函数:左边一般不是对象。<< >>运算符一般都要申明为友元重载函数。



为什么operator<<>>运算符重载一定要为友元函数呢?

标签:c++

原文地址:http://blog.csdn.net/u013467442/article/details/46461853

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!