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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 控制默認函數——默認或者禁用 的復制構造函數和賦值操作符的情況下,便編譯器會為我們生成默認的復制構造函數和賦值操作符,以內存復制的形式完成對象的復制。雖然這種機制可以為我們節省很多編寫復制構造函數和賦值操作符的時間,但是在某些情況下,比如我們不希望對象被復制,這種機制卻是多此一舉。) 關于類的“禁止復制”,現在可以使用delete關鍵字完美地直接表達: ``` class X { // … X& operator=(const X&) = delete; // 禁用類的賦值操作符 X(const X&) = delete; }; ``` 相反地,我們也可以使用default關鍵字,顯式地指明我們希望使用默認的復制操作: ``` class Y { // … // 使用默認的賦值操作符和復制構造函數 Y& operator=(const Y&) = default; // 默認的復制操作 Y(const Y&) = default; }; ``` 顯式地使用default關鍵字聲明使用類的默認行為,對于編譯器來說明顯是多余的,但是對于代碼的閱讀者來說,使用default顯式地定義復制操作,則意味著這個復制操作就是一個普通的默認的復制操作。 將默認的操作留給編譯器去實現將更加簡單,更少的錯誤發生 ,并且通常會產生更好的目標代碼。 “default”關鍵字可以用在任何的默認函數中,而“delete”則可以用于修飾任何函數。例如,我們可以通過下面的方式排除一個不想要的函數參數類型轉換: ``` struct Z { // … Z(long long); // 可以通過long long初始化 Z(long) = delete; // 但是不能將long long轉換為long進行初始化(?) }; ``` 參考: * the C++ draft section ??? * [N1717==04-0157] Francis Glassborow and Lois Goldthwaite: [explicit class and default definitions](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1717.pdf) (an early proposal). * Bjarne Stroustrup: [Control of class defaults](http://wiki.dinkumware.com/twiki/pub/Wg21portland/EvolutionWorkingGroup/controlofdefaults.pdf) (a dead end). * [N2326 = 07-0186] Lawrence Crowl: [Defaulted and Deleted Functions](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2326.html) .
                  <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>

                              哎呀哎呀视频在线观看