<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # C++ 運算符重載 > 原文: [https://www.programiz.com/cpp-programming/operator-overloading](https://www.programiz.com/cpp-programming/operator-overloading) #### 在 C++ 中,可以更改運算符的工作方式(對于用戶定義的類型)。 在本文中,您將學習實現運算符重載功能。 對于基本類型的變量,例如`int`,`float`,`double`等,運算符的含義始終相同。例如:要相加兩個整數,將使用`+`運算符。 但是,對于用戶定義的類型(例如:對象),您可以重新定義運算符的工作方式。 例如: 一個類的兩個對象是否包含字符串作為其數據成員。 您可以重新定義+運算符的含義,并使用它來連接那些字符串。 C++ 編程中的此功能允許程序員重新定義運算符的含義(當它們對類對象進行運算時),這稱為運算符重載。 * * * ## 為什么要使用運算符重載? 您可以編寫任何 C++ 程序,而無需知道運算符重載。 但是,程序員大量使用運算符操作來使程序直觀。 例如, 您可以將代碼替換為: ```cpp calculation = add(multiply(a, b),divide(a, b)); ``` 至 ```cpp calculation = (a*b)+(a/b); ``` * * * ## 如何在 C++ 編程中重載運算符? 為了重載運算符,在類內部將特殊的運算符函數定義為: ```cpp class className { ... .. ... public returnType operator symbol (arguments) { ... .. ... } ... .. ... }; ``` * 在這里,`returnType`是函數的返回類型。 * 函數的 `returnType`后跟運算符關鍵字。 * `Symbol`是要重載的運算符。 像:`+, <, -, ++` * 您可以通過類似于函數的方式將參數傳遞給運算符。 * * * ## 示例:C++ 編程中的運算符重載 ```cpp #include <iostream> using namespace std; class Test { private: int count; public: Test(): count(5){} void operator ++() { count = count+1; } void Display() { cout<<"Count: "<<count; } }; int main() { Test t; // this calls "function void operator ++()" function ++t; t.Display(); return 0; } ``` **輸出** ```cpp Count: 6 ``` 當`++`運算符對`test`類的對象(在這種情況下為對象`t`)進行操作時,將調用此函數。 在程序中,定義了`void operator ++ ()`運算符函數(在`Test`類內部)。 對于`t`對象,此函數將`count`的值加 1。 * * * ### 要記住的事情 1. 運算符重載使您可以重新定義運算符僅對用戶定義的類型(對象,結構)起作用的方式。 它不能用于內置類型(`int`,`float`,`char`等)。 2. 在 C++ 中,默認情況下已經重載了兩個運算符=和&。 例如:要復制相同類的對象,可以直接使用=運算符。 您不需要創建運算符。 3. 運算符重載不能更改運算符的優先級和關聯。 但是,如果要更改求值順序,則應使用括號。 4. C++ 中有 4 個不能重載的運算符。 它們是`::`(范圍分辨率),`.`(成員選擇),`.*`(通過函數指針選擇成員)和`?:`(三元運算符)。 * * * ### 使用運算符重載時遵循最佳實踐 運算符重載允許您定義運算符的工作方式(所需的方式)。 在上面的示例中,`++`運算符對對象進行操作,以將數據成員`count`的值增加 1。 ```cpp void operator ++() { count = count+1; } ``` 但是,如果使用以下代碼。 當使用`++`運算符時,它會將`count`的值減小 100。 ```cpp void operator ++() { count = count-100; } ``` 從技術上講這可能是正確的。 但是,此代碼令人困惑,并且難以理解和調試。 作為程序員,您要以適當的方式正確地使用操作符重載是您的工作。 * * * 在上面的示例中,當使用`++`運算符時,`count`的值增加 1。 但是,該程序在某種意義上是不完整的,您不能使用以下代碼: ```cpp t1 = ++t ``` 這是因為運算符的返回類型為`void`。 訪問這些頁面以了解更多信息: * [如何以正確的方式重載遞增運算符?](/cpp-programming/increment-decrement-operator-overloading) * [如何重載二元運算符-減去復數?](/cpp-programming/operator-overloading/binary-operator-overloading)
                  <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>

                              哎呀哎呀视频在线观看