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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 一.基本概念 1. **概念** 若用戶未聲明,則編譯器可以自動聲明的成員函數。 > 需要注意的是,有些情況下,用戶未聲明這些函數,編譯器也不會自動聲明這些成員函數。 2. 類型 + 構造函數 *constructor* + 析構函數 *destructor* + 拷貝構造函數 *copy constructor* + 拷貝賦值操作 *copy assignment operator* + \[11+\][$]移動構造函數 *move constructor* + \[11+\][$]移動賦值操作 *move assignment operator* 3. \[11+\][$]強行使用編譯器的合成版本函數 + `函數()=default` + **類內使用 `=default` 聲明時** 默認為內聯函數 + **類外使用 `=default` 聲明時** 默認為非內聯函數 ```c++ class Complex{ public: /*使用默認的構造函數*/ Complex() = default; /*使用默認的拷貝構造函數*/ Complex(Complex&) = default; /*使用默認的拷貝賦值函數*/ Complex& operator=(Complex&) = default; /*使用默認的移動構造函數*/ Complex(Complex&&) = default; /*使用默認的移動賦值函數*/ Complex& operator=(Complex&&) = default; /*使用默認的析構函數*/ ~Complex() = default; } ``` ## \[11+\][$]二. delete 修飾符 1. 在參數列表后面加上 `=delete` 表示不允許以任何方式調用它們。 + 任何函數都可以加該修飾符。 + 該修飾符必須出現在函數第一次聲明(或定義)的時候。 + 無法將刪除的函數傳遞給函數指針。 + 這不代表刪除該標識符,在名字查找時,該標識符仍是有效的。 2. **常見用途** 阻止對象的復制 >[warning] 請使用支持C++11標準的編譯器運行此例 ```c++ #include <iostream> using namespace std; class Complex { public: /*使用默認的構造函數*/ Complex() = default; /*禁止使用拷貝構造函數*/ Complex(Complex &) = delete; /*禁止使用拷貝賦值函數*/ Complex &operator=(Complex &) = delete; /*使用默認的析構函數*/ ~Complex() = default; } int main() { Complex a,b; Complex c(a); //錯誤,不能使用刪除的函數 b = a;//錯誤,不能使用刪除的函數 return 0; } ``` > [success] 對于老版本的編譯器,可以將相應函數聲明為私有來實現禁用復制 3. 刪除某些成員函數的后果 + 刪除所有構造函數,對象將不能創建 + 刪除析構函數,對象將不能刪除 > 此時對象只能使用 `new` 來創建,且不能使用 `delete` 來刪除。 + 刪除復制函數,對象不能復制 > 同時無法用該對象作為函數的參數和返回值 + 刪除移動函數,對象不能移動
                  <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>

                              哎呀哎呀视频在线观看