術語「多型」(Polymorphism
)是」poly
「 + 「morphs
「的組合,其意味著多種形式。 這是一個希臘詞。 在物件導向程式設計中,我們使用3
個主要概念:繼承,封裝和多型。
C++中有兩種型別的多型:
下面來看看一個簡單的C++執行時多型的例子。
#include <iostream>
using namespace std;
class Animal {
public:
void eat(){
cout<<"Eating...";
}
};
class Dog: public Animal
{
public:
void eat()
{
cout<<"Eating bread...";
}
};
int main(void) {
Dog d = Dog();
d.eat();
return 0;
}
執行上面程式碼,得到以下結果 -
Eating bread...
下面來看看看C++中的執行時多型性的另一個例子,下面有兩個派生類。
#include <iostream>
using namespace std;
class Shape {
public:
virtual void draw(){
cout<<"drawing..."<<endl;
}
};
class Rectangle: public Shape
{
public:
void draw()
{
cout<<"drawing rectangle..."<<endl;
}
};
class Circle: public Shape
{
public:
void draw()
{
cout<<"drawing circle..."<<endl;
}
};
int main(void) {
Shape *s;
Shape sh;
Rectangle rec;
Circle cir;
s=&sh;
s->draw();
s=&rec;
s->draw();
s=○
s->draw();
}
執行上面程式碼,得到以下結果 -
drawing...
drawing rectangle...
drawing circle...
執行時多型性可以通過C++中的資料成員來實現。 下面來看看一個例子,通過參照變數存取欄位,參照變數參照派生類的範例。
#include <iostream>
using namespace std;
class Animal {
public:
string color = "Black";
};
class Dog: public Animal
{
public:
string color = "Grey";
};
int main(void) {
Animal d= Dog();
cout<<d.color;
}
執行上面程式碼,得到以下結果 -
Black