<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 功能強大 支持多語言、二開方便! 廣告
                # C++ 中的接口:抽象類 > 原文: [https://beginnersbook.com/2017/09/cpp-abstract-class/](https://beginnersbook.com/2017/09/cpp-abstract-class/) 在 [C++](https://beginnersbook.com/2017/08/c-plus-plus-tutorial-for-beginners/) 中,我們互換使用術語抽象類和接口。具有**純虛函數**的類稱為抽象類。例如,以下函數是純虛函數: ```cpp virtual void fun() = 0; ``` 純虛函數用虛擬關鍵字標記,簽名后有`= 0`。您可以將此函數稱為抽象函數,因為它沒有正文。派生類必須為父類的所有純虛函數提供實現,否則默認情況下它將成為抽象類。 ## 為什么我們需要一個抽象類? 讓我們借助現實生活中的例子來理解這一點。讓我們說我們有一個類`Animal`,它會睡眠,發出聲音等等。現在我只考慮這兩個行為并創建一個具有兩個函數`sound()`和`sleeping()`的類`Animal`。 現在,我們知道動物的聲音是不同的,貓說“喵”,狗說“汪”。那么我在`Animal`類中為函數`sound()`提供了什么實現?這樣做的唯一和正確的方法是使這個函數純粹抽象,這樣我就不需要在`Animal`類中給出實現但是所有繼承`Animal`的類必須為此函數提供實現。這樣我確保所有動物都有聲音,但它們有獨特的聲音。 可以在 C++ 程序中編寫相同的示例,如下所示: ## 抽象類示例 ```cpp #include<iostream> using namespace std; class Animal{ public: //Pure Virtual Function virtual void sound() = 0; //Normal member Function void sleeping() { cout<<"Sleeping"; } }; class Dog: public Animal{ public: void sound() { cout<<"Woof"<<endl; } }; int main(){ Dog obj; obj.sound(); obj.sleeping(); return 0; } ``` ## 抽象類規則 1)我們已經看到任何具有**純虛函數**的類都是抽象類。 2)我們無法創建抽象類的實例。例如:如果我在上面的程序中寫了這行`Animal obj;`,就會導致編譯錯誤。 3)我們可以創建指向子類的實例的抽象基類的指針和引用。例如,這是有效的: ```cpp Animal *obj = new Dog(); obj->sound(); ``` 4)抽象類可以有[構造函數](https://beginnersbook.com/2017/08/cpp-constructors/)。 5)如果派生類沒有實現父類的純虛函數,則派生類變為抽象類。
                  <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>

                              哎呀哎呀视频在线观看