<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 一.運算符重載 1. 本質上也是函數的重載。因此可以當做函數使用。 2. 定義運算符重載函數 + `返回類型perator 運算符(形參表)` 3. 運算符重載方式 + **成員函數** 運算符第一個操作數必須為對象自身( **不可以經過類型轉換得到** ),其余操作數為形參表中的參數。 + **友元或普通函數** 運算符重載函數不是成員函數。運算符所有操作數為形參表中的參數。如果需要訪問類的非公有成員,應當把該函數聲明為 **友元** 。如果第一個操作數為對象自身,則調用時,第一個操作數可以通過類型轉換得到得到該類。 + 如果運算符第一個操作數不是對象自身,則不能重載為 **成員函數** 。 >[warning] VC++6.0 將運算符重載函數聲明為友元會出現無法訪問非公有成員的BUG,詳情見 *面向對象程序設計.類和對象.友元* 。 ```c++ #include <iostream> using namespace std; class Complex { private: double real_; double imaginary_; public: Complex() : real_(0), imaginary_(0) {} Complex(double real) : real_(real), imaginary_(0) {} Complex(double real, double imaginary) : real_(real), imaginary_(imaginary) {} double get_real() const { return this->real_; } double get_imaginary() const { return this->imaginary_; } Complex &set_real(double new_val) { this->real_ = new_val; return *this; } Complex &set_imaginary(double new_val) { this->imaginary_ = new_val; return *this; } //類內重載示例:重載加法運算符,第一個操作數為對象自身,第二個參數為 another Complex operator+(const Complex& another) const { return Complex(this->real_ + another.real_,this->imaginary_ + another.imaginary_); } }; //類外重載示例:重載插入運算符,第一個參數為輸出流,第二個參數為 c ostream& operator<<(ostream& os,const Complex& c) { return os<<'('<<c.get_real()<<','<< c.get_imaginary()<<')'; } int main() { Complex c1(5,6),c2(7,8),c3; c3=c1+c2;//調用 c1.operator+(const Complex& another) cout<<c3;//調用 ostream& operator<<(ostream& os,const Complex& c) return 0; } ``` >[test] >(12,14) ## 二.運算符重載規則 1. 只能拓充現有運算符的功能,不能定義新的運算符,也不能改變運算符的目數、結合性、優先級等其他屬性。除了重載函數調用運算符外,不可在運算符重載函數中添加默認參數。需要注意的是,運算符的重載有可能會改變運算符的求值順序。 2. 重載的運算符至少有一個操作數為類類型。防止用戶修改內置類型數據的運算性質。 3. 應當保證重載運算符的功能與運算符原有的功能類似。 4. 不可重載的運算符: + `::(域)` `.(成員訪問)` `.*(成員指針訪問)` `?:(條件)` `sizeof()(取大小)` `typeid()(獲取類型信息)` 5. 只能 **重載為成員函數** 的運算符: + `a=b(賦值)` `a(b)(函數調用)` `a[b] (下標訪問)` `a-> (成員指針訪問)`
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看