C++运算符重载

来源:互联网 发布:定位蜂窝移动网络搜索 编辑:程序博客网 时间:2024/05/22 10:38

一、基本概念

重载是具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符组成。

运算符
这里写图片描述

只能重载已有的运算符,对于一个重载的运算符,其优先级和结合律与对应的内置运算符保持一致。某些运算符不能重载,比如逻辑与,逻辑或,逗号运算符的运算对象求值顺序无法保留下来,&&和||运算符也无法保留内置运算符的短路求值属性,C++语言本身已经定义逗号运算符与取地址运算符用于类类型对象的特殊含义,所以一般来说它们的行为将异与常态,从而导致类的用户无法适应。

使用与内置类型一致的含义:
这里写图片描述

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

定义运算符为成员函数还是普通的非成员函数的一些准则:

  • 赋值(=)、下标([])、调用(())和成员访问箭头(->)运算符必须是成员
  • 复合赋值运算符一般来说是成员,但非必需
  • 改变对象状态的运算符或者与给定类型密切相关的运算符,如递增、递减和解引用运算符通常应该是成员
  • 具有对称性的运算符可能转换任意一端的运算对象,例如算术、相等性、关系和位运算符等,因此它们通常应该是普通的非成员函数。

二、输入和输出运算符

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

三、算术和关系运算符

这里写图片描述

四、相等运算符

这里写图片描述
这里写图片描述

五、关系运算符

这里写图片描述

六、赋值运算符

赋值和复合赋值运算符类似,运算符应该返回它左侧运算对象的引用。赋值运算符赋值之后,左侧运算对象的和右侧运算对象的值相等,+=运算符的行为应该与其内置的版本一致,即先执行+,再执行赋值。、

这里写图片描述

七、下标运算符

这里写图片描述

八、递增和递减运算符

这里写图片描述
这里写图片描述

九、成员访问运算符

这里写图片描述

十、函数调用运算符

这里写图片描述

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

0 0
原创粉丝点击