<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 功能強大 支持多語言、二開方便! 廣告
                [TOC] # 靜態轉換 用于類層次結構中基類(父類)和派生類(子類)之間指針或引用的轉換 * 進行上行轉換(把派生類的指針或引用轉換成基類表示)是安全的. * 進行下行轉換(把基類指針或引用轉換成派生類表示)時,由于沒有動態類型檢查,所以是不安全的 * 用于基本數據類型之間的轉換,如把int轉換成char,把char轉換成int.這種轉換的安全性也要開發人員來保證 ## 基礎類型轉換 ~~~ char a = 'a'; //char->double //static_cast<要轉換的類型>(將轉換誰) double b = static_cast<double>(a); cout << typeid(b).name() << endl; ~~~ ## 有層次關系類的指針或引用轉換 ~~~ Father *f = NULL; Son *s = NULL; //向下轉型,不安全 Son *s1 = static_cast<Son *>(f); //向上轉型,安全 Father *f1 = static_cast<Father *>(s); ~~~ ## 引用轉換 ~~~ Father f; Son s; Father &ref_f = f; Son &ref_s = s; //向上轉換,安全 static_cast<Father&>(ref_s); //向下轉換,不安全 static_cast<Son&>(ref_f); ~~~ # 動態轉換 * `dynamic_cast`主要用于類層次間的上行轉換和下行轉換 * 在類層次間進行上行轉換時,`dynamic_cast`和`static_cast`的效果是一樣的 * 在進行下行轉換時,`dynamic_cast`具有類型檢查的功能,比`static_cast`更安全 **基礎類型不能使用動態轉換** ~~~ Father *f = NULL; Son *s = NULL; //向上轉換,安全 Father *f1 = dynamic_cast<Father*>(s); //向下轉換,不安全,會檢查,如果不是多態會報error //Son *s1 = dynamic_cast<Son *>(f); Father *f2 = new Son(); Son *s2 = dynamic_cast<Son *>(f2); ~~~ # 常量轉換 該運算符用來修改類型的const屬性 * 常量指針被轉化成非常量指針,并且仍然指向原來的對象; * 常量引用被轉換成非常量引用,并且仍然指向原來的對象; **注意:不能直接對非指針和非引用的變量使用const_cast操作符去直接移除它的const.** ~~~ const int *p = NULL; // const->不帶const int *newP = const_cast<int*>(p); int *pp = NULL; const int* newPP = const_cast<const int*>(pp); ~~~ # 重新解釋轉換 這是最不安全的一種轉換機制,最有可能出問題。 主要用于將一種數據類型從一種類型轉換為另一種類型。 它可以將一個指針轉換成一個整數,也可以將一個整數轉換成一個指針. ~~~ int a = 10; int *p = reinterpret_cast<int *>(a); Father *f = NULL; Other *o = reinterpret_cast<Other*>(f); ~~~
                  <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>

                              哎呀哎呀视频在线观看