运算符重载是对已有的运算符赋予多重含义,让同一个运算符作用于不同类型的数据时导致不同的行为。运算符重载的实质就是函数重载。在实现的过程中,首先要把指定的运算表达式转化为对运算符函数的调用,将运算对象转化为运算符函数的实参,然后根据实参的类型来确定需要调用的函数,这个过程是在编译的过程中完成的。
规则:
- C++中少数几个运算符(e.g: 类属关系运算符“.”,成员指针运算符"*",作用域分辨符“::”,三目运算符"?:")外,全部可以重载,而且只能重载已有的运算符。
- 重载后的运算符优先级和结合性都不会发生改变。
- 一般来讲,重载的功能应当和原有功能类似,不能改变原运算符的操作对象个数,同时至少要有一个操作对象是自定义类型。
语法形式:
一:运算符重载为类的成员函数
返回类型 operator 运算符(形参表)
{
函数体;
}
二:运算符重载为非成员函数(当以非成员函数形式重载函数时,有时需要访问运算符参数所涉及类的私有成员,此时可以把该函数声明为类的友元函数)
返回类型 operator 运算符(形参表)
{
函数体;
}
返回类型指定了重载运算符的返回值类型,也就是运算结果类型;operator是定义运算符重载函数的关键字;运算符即是要重载的运算符名称(必须是C++中可以重载的运算符,e.g.: "+");形参表中给出重载运算符所需要的参数和类型。