运算符重载

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),输入运算符 >> 和输出运算符 << 必须重载为友元函数。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章