关于C++运算符的一些基本知识。记录以方便查找。
1、运算符优先级
运算符优先级:算术运算符 > 关系运算符(除了!运算符) > 逻辑运算符 > 条件运算符 > 赋值运算符
2、运算符重载
2.1、基本概念
重载的运算符是具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符号共同组成。
和其他函数一样,重载的运算符也包含返回类型、参数列表以及函数体。
关于运算符重载需要注意一下几点:
- 可以重载大多数的运算符,而且我们只能重载已经存在的运算符;
- 重载运算符函数的参数数量与该运算符作用的运算对象数量一样多,即一元运算符有一个参数,二元有两个,但是不能有默认参数。
- 如果一个运算符函数是成员函数,则它的第一个(左侧)运算对象绑定到隐式的this指针上,因此,成员运算符函数的(显示)参数数量比运算符的运算对象总数少一个;
- 对于一个运算符函数来说,它或者是类的成员,或者至少有一个当前类类型的参数,比如比如有这样的定义:
是错误的,不能为int重定义内置的运算符;
- 对于一个重载的运算符来说,其优先级和结合律与对应的内置运算符保持一致;
- 箭头运算符->、下标运算符[]、函数调用运算符()、赋值运算符=,只能以成员函数的形式重载。