【C++】c++复数类Complex

运算符重载应该注意以下几个问题:

(1)c++语言中只能对已有的c++运算符进行重载,不允许用户自己定义新的运算符。
(2)c++中绝大部分的运算符允许重载,不能重载的运算符只有以下几个:
. 成员访问运算符
.* 成员指针访问运算符
:: 作用域运算符
sizeof 长度运算符
?: 条件运算符
(3)重载不能改变运算符的操作对象(即操作数)的个数。例如,在c++语言中,运算符“+”是一个双目运算符(即只能带两个操作数),重载后仍为双目运算符。
(4)重载不能改变运算符原有的优先级,也不能改变运算符原有的结合特性。例如,c++语言规定,乘法运算符“/”的优先级高于减法运算符“-”的优先级,故表达式:x = a/b-c; 的集合特性等价于 x = (a/b)-c;。
(5)运算符重载函数的参数至少应有一个是类对象(或类对象的引用),即运算符重载函数不能全是c++预定义的基本数据类型。例如:
int operator+ (int x,int y)
{ return x+y; }
int operator+ (int x,int y)
{ return x-y; }
以上两个函数构成了重载,如果有表达式:5+3,它的结果是8呢?还是2呢?显然,这是绝对不允许的!
(6)双目运算符一般可以被重载为友元运算符重载函数或者成员运算符重载函数,但有一种情况,必须使用友元函数!
例如:如果将一个类AB的对象与一个整数相加,可以用成员运算符函数重载“+”运算符。
AB::operator+ (int x)
{
AB tmp;
tmp.a = a+x;
tmp.b = b+x;
return tmp;
}
若ob1和ob2是类AB的对象,则以下语句是正确的:
ob2 = ob1+200;这条语句被c++编译系统解释为:ob2 = ob1.operator+ (200);
由于对象ob2是运算符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值