<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          C++核心準(zhǔn)則C.83:對(duì)于值類類型,考慮提供一個(gè)不會(huì)拋出異常的交換...

          83cda04c50429b9b28dab969f3fc975e.webp

          17837d93b3960a794bd61f6e121230be.webp
          f96c6ff16c97849716454a8c123b0b37.webp

          C.83: For value-like types, consider providing a noexcept swap function

          C.83:對(duì)于值類類型,考慮提供一個(gè)不會(huì)拋出異常的交換函數(shù)


          f96c6ff16c97849716454a8c123b0b37.webp
          17837d93b3960a794bd61f6e121230be.webp


          53583f5943f3991ddae6a06f78b193d0.webp47bfa6336ae1a5fddbe3ba3ac90a5c7d.webpReason(原因)47bfa6336ae1a5fddbe3ba3ac90a5c7d.webp

          A swap can be handy for implementing a number of idioms, from smoothly moving objects around to implementing assignment easily to providing a guaranteed commit function that enables strongly error-safe calling code. Consider using swap to implement copy assignment in terms of copy construction. See also destructors, deallocation, and swap must never fail.

          移動(dòng)功能可以在實(shí)現(xiàn)很多常規(guī)操作時(shí)提供便利。從順暢地移動(dòng)對(duì)象到更容易地實(shí)現(xiàn)賦值,以至提供有保證的提交函數(shù),這個(gè)函數(shù)可以為不會(huì)失敗的調(diào)用代碼提供強(qiáng)有力的支持。


          53583f5943f3991ddae6a06f78b193d0.webp47bfa6336ae1a5fddbe3ba3ac90a5c7d.webpExample, good(示例)47bfa6336ae1a5fddbe3ba3ac90a5c7d.webp
          class Foo {
          public:
          ? ?void swap(Foo& rhs) noexcept
          ? ?{
          ? ? ? ?m1.swap(rhs.m1);
          ? ? ? ?std::swap(m2, rhs.m2);
          ? ?}
          private:
          ? ?Bar m1;
          ? ?int m2;
          };

          Providing a nonmember swap function in the same namespace as your type for callers' convenience.

          為了調(diào)用者的方便,在和目標(biāo)類型同一個(gè)命名空間中提供一個(gè)非成員的swap函數(shù)。

          void swap(Foo& a, Foo& b)
          {
          ? ?a.swap(b);
          }
          53583f5943f3991ddae6a06f78b193d0.webp47bfa6336ae1a5fddbe3ba3ac90a5c7d.webpEnforcement(實(shí)施建議)47bfa6336ae1a5fddbe3ba3ac90a5c7d.webp


          • (Simple) A class without virtual functions should have a swap member function declared.

          • (簡單)不包含虛函數(shù)的類就應(yīng)該定義一個(gè)swap函數(shù)。

          • (Simple) When a class has a swap member function, it should be declared noexcept.

          • (簡單)如果一個(gè)類包含一個(gè)swap成員函數(shù),這個(gè)函數(shù)應(yīng)該被聲明為noexcept。

          53583f5943f3991ddae6a06f78b193d0.webp47bfa6336ae1a5fddbe3ba3ac90a5c7d.webp原文鏈接47bfa6336ae1a5fddbe3ba3ac90a5c7d.webp

          https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c83-for-value-like-types-consider-providing-a-noexcept-swap-function



          覺得本文有幫助?請(qǐng)分享給更多人。

          關(guān)注【面向?qū)ο笏伎肌枯p松學(xué)習(xí)每一天!

          面向?qū)ο箝_發(fā),面向?qū)ο笏伎迹?/span>

          瀏覽 40
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲成人第一页 | аⅴ资源天堂资源库在线 | 男女操逼免费网站 | 夜夜草av | 秋霞一区 |