1. 程式人生 > >C++學習筆記——多型

C++學習筆記——多型

運算子過載

過載為類成員的運算子定義形式

函式型別 oprator 運算子(形參)
{
    ...
}
//引數個數=原運算元個數-1 (後置++、--除外)

雙目運算子過載規則

  • 如果要過載B為類成員函式,使之能夠實現表示式oprd1 B oprd2,其中oprd1為A類物件,則B應被過載為A類的成員函式,形參型別應該是oprd2所屬的型別。
  • 經過載後,表示式oprd1 B oprd2相當於oprd1.oprator B(oprd2)

前置單目運算子過載規則

  • 如果要過載U為類成員函式,使之能夠實現表示式U oprd,其中oprd為A類物件,則U應被過載為A類的成員函式,無形參。
  • 經蟲子啊後,表示式U oprd相當於oprd.operator U()

後置單目運算子++和--過載規則

  • 如果要過載++和--為類成員函式,使之能夠實現表示式oprd++或oprd--,其中oprd為A類物件,則++或————應被過載為A類的成員函式,且具有一個int型別形參。
  • 經過載後,表示式oprd++相當於oprd.operator ++(0)

運算子過載為非成員函式的規則

  • 函式的形參代表依自左向右次序排列的各運算元。
  • 過載為非成員函式時
    • 引數個數=原運算元個數(後置++、--除外)
    • 至少有一個自定義型別的引數。
  • 後置單目運算子++和--的過載函式,形參列表中要增加一個int,但不必寫形參名。
  • 如果在運算子的過載函式中需要操作某類物件的私有成員,可以將此函式宣告為該類的友元。
  • 雙目運算子B過載後,表示式oprd1 B oprd2等同於operator B(oprd1,oprd2)
  • 前置單目運算子B過載後,表示式B oprd等同於operator B(oprd)
  • 後置單目運算子++和--過載後,表示式oprd B等同於operator B(oprd,0)