运算符重载

1、当运算符作用于类对象时,C++语言允许我们为其制定新的含义。同时,我们也能自定义类类型的转换规则。

2、除了重载的函数调用运算符operator()之外,其他重载运算符不能含有默认实参。

3、如果一个运算符函数是成员函数,则他的第一个(左侧)运算对象绑定到隐式的this指针式,因此成员运算符函数的(显式)参数数量比运算符的对象总少一个。

4、对于一个运算符函数来说,它或者是类的成员,或者至少含有一个类类型的参数。

5、只能重载已有的运算符,无权发明新的运算符。

6、(+、-、*、&)这四个既是一元运算符也是二元运算符。

7、重载不能改变运算符的优先级。

8、一般情况下,单目运算符最好重载为类的成员函数,双目运算符重载为类的友元函数。

9、(::    .*      .     ?:)不能被重载

10、双目运算符(赋值=、调用()、下标[  ]、成员访问箭头->)不能重载为类的友元函数,必须是成员函数。

11、复合运算符应该是成员函数,但非必须。

12、改变对象状态的运算符或者与给定类型密切相关的运算符,如递增、递减和解引用 运算符,通常应该是成员函数。

13、具有对称性的运算符可能转换任意一端的运算对象,例如算术、相等性、关系和位运算符等等,通常应该是普通的非成员函数。

14、如果想提供含有类对象的混合型表达式,则运算符必须定义成非成员。

15、当我们把运算符定义为成员函数时,,它的左侧运算对象必须是运算符所属类的一个对象。

16、输出<<、输入>>运算符

  ostream & operator <<( ostream & os,const Sales_data &item)//第二个参数为引用避免复制实参,为const因为一般输出操作不改变对象的内容

   os<<item.isbn().....;

return os;

}//返回ostream的形参

(1)必须是非成员函数。否则它的左侧运算对象必须是运算符所属类的一个对象,则Sale_data data;data<<cout;

17、算术运算符和关系运算符

一般情况下把他们定义为非成员运算符以允许对左侧和右侧的对象进行调换。

18、相等运算符:非成员函数

19、赋值运算符:必须是成员函数,返回左侧对象的引用

20、符合运算符:成员函数,返回左侧对象的引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值