成员运算符重载函数与友元运算符重载函数的比较

(1)对双目运算符而言,成员运算符重载函数参数表中含有一个参数,而友元运算符重载函数参数表中含有两个参数;对单目运算符而言,成员运算符重载函数参数表中没有参数,而友元运算符重载函数参数表中含有两个参数。

(2)双目运算符一般可以被重载为友元运算符重载函数或成员运算符重载函数,但有一种情况,必须使用友元函数:
例如,如果将一个复数与一个整数相加,可用成员运算符函数重载 “+”:

Complex operator+(int a){
   
   
	return (real+a,imag);
}

若 com 和 com1 是类 Complex 的对象,则以下语句是正确的:

com1=com+100;

这条语句被 C++ 编译系统解释为:

com1=com.operator+(100);

  由于对象 com 是运算符 “+” 的左操作数,所以它可以调用 “+”运算符重载函数 operator+,执行结果是对象 com 的数据成员 real 被加上一个整数 100。

  然而,下面的语句是错误的

com1=100+com;	//编译错误,运算符 + 的左侧是整数

这条语句被 C++ 编译系统解释为:

com1=100.operator+(com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值