重载操作符
原型:返回类型 operator操作符(形参);
注意事项:
(1)不能通过连接其他合法符号来创建任何新的操作符,如下是错误的:
sales_item operator**(const sales_item &org); //error 不能通过连接其他合法操作符来创建任何新的操作符(2)重载操作符必须一个具有类类型,类成员的话因为有一个默认的本类this,所以也满足
//sales_item operator+(const int a, const int b); //error 必须至少提供一个类类型 //sales_item operator+( const int b ); // ok 默认this为类类型注意:用于内置类型的操作符含义不能变,也不能为任何内置类型定义额外的新的操作符(如数组),如下
int operator+(int, int); //error(3)优先级和结合性是固定的,如下
x==y+z
y、z先使用重载操作符+,然后将计算的结果与x 作为形参调用重载操作符==
(4)不再具备短路求值
重载操作符的设计
(1)不要重载具有内置含义的操作符
(2)大多数操作符对类对象没有意义
(3)复合赋值操作符
(4)相等和关系操作符
(5)成员和非成员的实现
。。。