|
因为自己写一个小程序的时候弄了个问题,对于一些operator定义成成员函数则是不可以,而定义成friend则是可以,有些不理解,看到redsnow写的一篇文章有些启发,原文链接是http://blog.chinaunix.net/u/24250/showart_182419.html,原文如下。 |
对于class中将operator函数定义为friend主要有以下考虑:
1.friend function是对外公开的,而class method是属于对象的,有些情况调用不方便
2.对某些需要两个参数的operator function,定义friend比较方便,如下例中operator <<
3.所有class method必须有匹配的左值类型进行调用而friend则无需这样,只要能隐式转化成当前类型就可以调用该