重载运算与类型转换
重载运算符基本概念
- 重载运算符是具有特殊名字的函数,它们的名字由关键字
operator
和其后要定义的运算符号共同组成
- 与其他函数一致,重载的运算符也包含返回类型、参数列表以及函数体
- 如果一个运算符函数是成员函数,则它的第一个(左侧)运算对象绑定到隐式的this指针上,因此,成员运算符函数的(显式)参数数量比运算符的运算对象总数少一个
- 当一个重载的运算符是成员函数时,this,绑定到左侧运算对象,成员运算符函数的(显式)参数数量比运算对象的数量少一个
- 对于一个运算符函数来说,它或者是类的成员,或者至少含有一个类类型的参数
- 当运算符作用于内置类型的运算对象时,我们无法改变该运算符的含义
- 可以重载的运算符如下图所示
![Capture.PNG-40.4kB][2]
- 将运算符作用域类型正确的实参与像普通函数一样直接调用运算符函数(先指定函数名字,然后传入参数正确,类型适当的实参)一样
data1 + data2; //普通的表达式
operator+(data1,data2); //等价的函数调用
- 通常情况下,不应该重载逗号,取地址,逻辑与和逻辑或运算符
- 只有当操作的含义对于用户来说清晰明了时才使用运算符,如果用户对运算符可能有几种不同的理解,则使用这样的运算符重载将产生二义性