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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 一.子類型 ### 1.子類型的概念 當該類型 `B` 至少提供了類型 `A` 的行為,就稱類型 `B` 是類型 `A` 的子類型。此時,類型 `B` 的對象可以像類型 `A` 的對象那樣被使用。 子類型是單向的、不可逆的。 ### 2.子類型常用操作 1. 可以用 `B` 來初始化 `A` 的引用。 2. 可以用 `B` 的地址來初始化指向 `A` 的指針。 3. `B` 可以向 `A` 賦值,也可以初始化 `A` 。 ### 3.繼承關系中的子類型 假設有類 `B` 繼承 `A`,則: + 不論 `B` 以什么方式繼承 `A` , 在 `B` 的成員函數和友元中,可以將 `B` 當做 `A` 使用。 + 當 `B` 以公有或受保護的方式繼承 `A` , 在 `B` 的派生類 `C` 中, `C` 的成員函數和友元可以將 `B` 當做 `A` 使用。 + 當 `B` 以公有的方式繼承 `A`,則可以在任意地方中, `B` 可以當做 `A` 使用。 從上面的幾種情況中可以看出,這種 `B->A` 關系的訪問權限與繼承關系是一致的,而且會像成員一樣繼承下去。 只有公有派生類才是基類真正的 **子類型** ,它完整地繼承了基類的功能。 需要注意的是,將派生類傳遞給基類的引用后,引用的地址不是派生類對象的地址,而是派生類對象中,基類部分的地址。指針同理。 #### 例1 假設有下面的定義聲明: ```c++ struct A1 { int x_; A1(int x = 1) :x_(x) {} }; struct A2 { int x_; A2(int x = 2) :x_(x) {} }; struct A3 { int x_; A3(int x = 3) :x_(x) {} }; struct B : public A1, public A2, public A3 { int y_; }; ``` 然后我們定義一個對象和一個引用: ```c++ B b; A2 &r = b; ``` 接下來我們對這兩個變量取地址: ```c++ cout<<&r<<endl; cout<<&b<<endl; ``` >[test] >0019FF24 >0019FF20 定義成指針也是一樣的: ```c++ B b; A2 *p = &b; cout<<p<<endl; cout<<&b<<endl; ``` >[test] >0019FF24 >0019FF20
                  <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>

                              哎呀哎呀视频在线观看