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

C++ - 多型

動態多型需要滿足的條件

  1. 有繼承關係

  2. 子類要重寫父類的虛擬函式(子函式重寫的時候加不加virtual都可以)(加上virtual記憶體變為4個位元組,指標的記憶體也是4個位元組)

    重寫:函式的返回值型別、函式名、形參列表中所有內容需要相同

    過載:函式名相同,引數不同

動態多型使用

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

例子

#include<iostream>
using namespace std;

class Animal
{
public:
    virtual void speak() // + virtual = 虛擬函式
    {
        cout<<"動物在說話!"<<endl;
    }
};

class Cat:public Animal
{
public:
    void speak() //Animal下的sprak函式加上virtual 這邊加不加都可以
    {
        cout<<"小貓在說話!"<<endl;
    }
};

void doSpeak(Animal &animal)
{
    animal.speak(); //不加virtual 動物在說話!
// 把Animal下的sprak函式加上virtual ,輸出:小貓在說話!
}

void test1()
{
    Cat cat;
//    cat.speak(); // 小貓在說話!
    doSpeak(cat);
}

int main()
{
    test1();
    return 0;
}