靜態多態和動態多態

面向對象編程的多態從綁定時間來看,可以分成靜態多態和動態多態,也稱爲編譯期多態和運行期多態。

應用形式上:

靜多態是發散式的,讓相同的實現代碼應用於不同的場合。

動多態是收斂式的,讓不同的實現代碼應用於相同的場合。

思維方式上:

靜多態是泛型式編程風格,它看重的是算法的普適性。

動多態是對象式編程風格,它看重的是接口和實現的分離度。

靜態多態

(1)函數多態(重載):函數名一樣,參數類型或個數不一樣,返回類型可以一樣也可以不一樣。

int max(int x,int y){...}

double max(double x,double y){...}

(2)宏多態:

#define ADD(A,B) (A)+(B);

int a = 1;

int b = 2;

String c = "1";

String d = "2";

輸出ADD(a,b)得到整型數3,輸出ADD(c,d)得到字符串12。

(3)模板


動態多態

(1)繼承和虛函數機制

class A{

public:

virtual ~A(){}

virtual void out(){

cout<<"I am BaseClass."<<endl;

}

};

class B:public A

{

public:

virtual void out(){

cout<<"I am DerivedClass."<<endl;

}

};

int main()

{

A *p=new B;

p->out();

}

發佈了15 篇原創文章 · 獲贊 12 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章