天天看點

多态性——運算符重載(三)

  1. ++和–重載:通過是當否在參數表中插入關鍵字int帶來區分這兩種方式。字首方式:ob.operator++();字尾方式:ob.operator++(int)。(這兩種都是成員函數重載。友元函數重載一般都需要引用(ob.operator++( X &ob);)
  2. 注意字首和字尾的差別:前者是先自減,傳回的是修改後的對象本身;後者傳回的是自減前的對象,然後對象自減。
  3. 友元運算函數沒有this指針,是以不能用this指針所指的對象。故用友元函數重載是需要采用對象的引用參數傳遞資料。
  4. 指派運算符:如果使用者自定義指派運算符函數,那麼系統将自動的生成為其生成一個預設的指派運算符函數。
  5. 指派運算符可以解決指針懸挂的問題。調用預設的指派運算符函數,采用的淺層複制方法,是兩個指針指向同一個空間。可以為對象配置設定各自的記憶體空間,這就是深層複制。且隻能重載為成員函數,而不能重載友元函數。雙目指派運算符應重載成員函數的形式。
  6. 類型轉換:将一種類型的值轉換為另一種的類型值,可以是隐式轉換,也可以是顯式轉換(類型名 (表達式))。
  7. 轉換構造函數:具有類型轉換的作用,它的作用是将一個其他類型的資料轉換為它所在類的對象。

    (1)先聲明一個類。

    (2)在這個類中定義一個隻有一個參數的構造函數,參數是待轉換類型的資料,在函數體中指定轉換的方法。(類似一個數和一個類相加);

  8. 轉換構造函數說明:

    (1)轉換構造函數也是構造函數,作用是将其他類型的資料轉換為所在類的對象,僅僅起到初始化的作用。

    (2)轉換構造函數不僅可以将一個系統預定義的标準類标準類型資料轉換為類的對象,也可以将另一個類的對象轉換為轉換構造函數所在類的對象。

  9. 類型轉換函數:通過轉換構造函數将制定的資料轉換為類的對象。但是不能反過來将一個類的對象轉換為其他類型的資料。類型轉換函數的作用是将一個類的對象轉換為另一個類型的資料。(operator double ( ))
  10. 類型轉換函數注意事項

    (1)類型轉換函數隻能定義一個類的成員函數而不能是友元函數。

    (2)類型轉換函數可以沒有參數,也不能在函數名前面指定函數類型。

    (3)類型轉換函數必須有return值,必須送回目标類型的資料作為函數的傳回值。

    (4)一個類可以定義多個類型轉換函數。

c++

繼續閱讀