C++操作符重載(Boolan)

來源:互聯網
上載者:User

標籤:使用   方式   編譯   解釋   名稱   語句   關鍵字   全域   通過   

C++中操作符號重載重要通過成員函數很全域函數來實現,為了實現對成員資料的訪問通常將全域函式宣告為友元。重載的函數名稱使用operator關鍵字,如operator op(),op可以是常見的+、-、*、/等操作號,也可以自訂轉換函式如:operator int(),定義了對象轉換成int的方式。

  • 重載函數的調用方式,如a+b,a為類對象,若實現了+重載,將調用a.operator+(b),在這裡+運算子作用於左邊的對象,例如:
    std::string str = "Hello, ";str.operator+=("world");                       // 相當與str += "world";
  • 由於操作符作用於左側對象或變數,因此使用需要注意符合左右兩邊的順序,例如:
  • class Foo{public:    Foo(int data=0): m_data(data) {}    Foo& operator+(int a) {        m_data += a;        return *this;    }    friend std::ostream& operator<<(std::ostream& os, const Foo& f) {        return os << f.m_data;    }private:    int m_data;};

    此時定義對象,語句Foo a; a + 1;正常執行,1 + a;將無法編譯,因為無法找到常量1的+操作定義,定義友元函數:

  • friend Foo& operator+(int a, Foo& f) {    return f + a;}

    語句1 + a;將由C++的重載解析解釋為operator+(1, a),可以正常通過。

C++操作符重載(Boolan)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.