C++中的運算符重載

運算符"幾乎是所有的編程語言中都會出現的概念,例如+、-、*、/ 就是最常見的運算符。C++預定義的運算符只能作用於C++已經定義的基本數據類型,對於用戶自定義的類型,如果也需要進行類似的運算操作的話,就需要重新去定義這些運算,賦予運算符新的功能,即"運算符重載"。

一、運算符重載時需要注意的點

  1. 運算符重載不改變運算符的"優先級"與"結合性",也不改變運算符的操作數個數。
  2. 重載運算符時不應該改變運算符的含義,比如說"+"重載之後仍然表示加法的含義。
  3. 運算符重載的本質是函數重載,運算符函數可以作為成員函數,也可以作為非成員函數,作為非成員函數時一般為友元函數。
  4. 在大多數情況下,將運算符函數重載為類的成員函數和類的友元函數都是可以的。但是要注意下面幾個運算符函數必須要重載為成員函數:=、[]、()、->。
  5. C++中大部分運算符都是可以被重載的,但是有5個運算符不允許被重載:"."、".*"、"::"、"?:"、"sizeof"。

二、運算符重載的語法:

<code> operator(){                      //函數體}/<code>

三、運算符重載實例(複數類)

<code>#include <iostream>using namespace std;class Complex {public:    Complex(int real, int imag);    ~Complex();        // 成員函數重載運算符    Complex& operator+(const Complex& c);    // 友元函數重載"流操作運算運算符"    friend ostream& operator<real_ += c.real_;    this->imag_ += c.imag_;    return *this;}ostream& operator< 0)        out << "+" << c.imag_ << "i";    else         out << c.imag_ << "i";    return out;}int main(){    Complex a(4, -6);    cout << a << endl;      // 等於operator</<iostream>/<code> 


C++中的運算符重載


分享到:


相關文章: