您的位置:首页 > 其它

成员函数和友元函数的选择方案指导原则

2013-09-18 11:27 246 查看
成员函数和非成员函数 ( 友元函数 ) 选择方案

通常对类本身的操作 ,( 如赋值 =, 下标 [], 调用 (), 成员访问符 ->, 自增 ++, 自减 --) 请选择成员函数

通常对两个对象进行操作 ,( 如算术操作 , 位操作符 , 关系操作 , 输入输出 ) 请选择非成员函数 , 就是用友元函数实现

成员 / 非成员函数重载选择指导

一元操作符就是操作符有一个对象 , 如 x++,y-- 等 , 通常以类的成员函数实现重载

二元操作符就是操作符有二个对象 , 如 x+y,x-y 等 , 通常以类的友元函数实现重载

以上规则是一个建议,其实两种方式都可以实现,如下所示。注意,如果一个函数有friend修饰,那么它在public还是private域限制都失效了,因为这个函数是friend。以下面的例子为例,friend bool operator ==() 可以移到private域,不影响使用。如果同时定义了友元函数和成员函数,那么VS2010编译器默认调用的是成员函数的版本if (a == b) {...},除非显式调用友元函数版本,比如 if( operator == (a, b)) {...}

class AAA
{
public:
bool operator == (const AAA &a);
friend bool operator == (const AAA &left, const AAA &right);

private:

int v;
};

bool operator == (const AAA &left, const AAA &right){return left.v == right.v;}
bool AAA::operator == (const AAA &a){return v == a.v;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐