C++ - 多型
阿新 • • 發佈:2020-10-10
動態多型需要滿足的條件
-
有繼承關係
-
子類要重寫父類的虛擬函式(子函式重寫的時候加不加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; }