1. 程式人生 > 資訊 >業內:記憶體公司對終端市場需求前景持謹慎態度

業內:記憶體公司對終端市場需求前景持謹慎態度

多型的基本概念

多型是C++面向物件三大特性之一

多型分為兩類

  • 靜態多型: 函式過載 和 運算子過載屬於靜態多型,複用函式名
  • 動態多型: 派生類和虛擬函式實現執行時多型

靜態多型和動態多型區別:

  • 靜態多型的函式地址早繫結 - 編譯階段確定函式地址
  • 動態多型的函式地址晚繫結 - 執行階段確定函式地址

下面通過案例進行講解多型

class Animal
{
public:
    //Speak函式就是虛擬函式
    //函式前面加上virtual關鍵字,變成虛擬函式,那麼編譯器在編譯的時候就不能確定函式呼叫了。
    //只有在執行的時候才會決定使用父類還是子類的方法
    virtual void
speak() { cout << "動物在說話" << endl; } }; class Cat :public Animal { public: void speak() { cout << "小貓在說話" << endl; } }; class Dog :public Animal { public: void speak() { cout << "小狗在說話" << endl; } }; //我們希望傳入什麼物件,那麼就呼叫什麼物件的函式
//如果函式地址在編譯階段就能確定,那麼靜態聯編 //如果函式地址在執行階段才能確定,就是動態聯編 void DoSpeak(Animal& animal) { animal.speak(); } // //多型滿足條件: //1、有繼承關係 //2、子類重寫父類中的虛擬函式 //多型使用: //父類指標或引用指向子類物件 void test01() { Cat cat; DoSpeak(cat); Dog dog; DoSpeak(dog); } int main() { test01(); system("pause"); return
0; }

總結:

多型滿足條件

  • 有繼承關係
  • 子類重寫父類中的虛擬函式

多型使用條件

  • 父類指標或引用指向子類物件

重寫:函式返回值型別 函式名 引數列表 完全一致稱為重寫