1. 程式人生 > 實用技巧 >c++多型

c++多型


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

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

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

#include<iostream>
using namespace std;
class Animal
{
public:
    //Speak函式就是虛擬函式
    //函式前面加上virtual關鍵字,變成虛擬函式,那麼編譯器在編譯的時候就不能確定函式呼叫了。
   virtual void speak()
    {
        cout
<<"動物在說話"<<endl; } }; class cat:public Animal { public: //重寫 函式返回值 型別 函式名相同 void speak() { cout<<"小貓在說話"<<endl; } }; void dospeak(Animal&animal) { animal.speak(); } //多型滿足條件: //1、有繼承關係 //2、子類重寫父類中的虛擬函式 //多型使用: //父類指標或引用指向子類物件 void test() { cat c; dospeak(c);
//傳入的是子類物件 傳入什麼就進入哪個類 } int main() { test(); }