1,运算符重载:重新解释对象间运算的运算符含义。
注意:重载后的运算符只能应用于对象间的运算。
运算符重载主要有两种形式:(1),成员函数形式,(2),友元函数形式。除这两中形式外,运算符还可以重载为一般的函数形式,但这种方法一般不常用。,
2,C++中不可重载的运算符:
(1). 成员访问运算符
(2).* 成员指针运算符
(3):: 限定运算符
(4)?: 三目运算符
(5)sizeof 类型空间长度测试运算符
3,运算符重载的定义形式
(1).成员函数重载运算符的一般形式
<返回类型> <类名> :: operator <重载的运算符>(参数列表)
{
函数体;
}
注意:?= 、[ ] 、( ) 、-> 以及所有类型转换运算符只能作为成员函数重载。如果第一操作数不是同类对象,而是其他数据类型,则只能作为非成员成员函数重载。
(2),友元函数重载运算符的一般形式
friend <返回类型> operator <重载运算符> (参数列表)
{
函数体;
}
注意:友元函数不能重载 ?= 、[ ] 、( ) 、->
4,
(1),用类的成员函数重载运算符时,由于有this传递参数(对象),对于单目运算符,实现它的成员函数不能有参数,对于双目运算符,只能有一个参数。
(2),使用友元运算符函数比成员函数灵活,如果重载运算符左边的参数是非类的对象,则只能使用友元函数重载。
注意:
(1),对于大对数双目运算符来说,用友元函数重载运算符比成员函数适应性强。
(2),虽然赋值运算符是双目运算符,但为防止出现二义性,赋值运算符应重载为成员函数。
(3),单目运算符 ++ 、— 、以及下标运算符 () 、[ ] 、等一般应重载为成员函数。
(4),输入运算符 >> 和输出运算符 << 必须重载为友元函数。