靜態多態與動態多態

多態的字面含義:具有多種不同的形態。

關鍵字:重載/模版和虛函數

類型:編譯期多態(靜態多態,早綁定)和運行期多態(晚綁定)

編譯期多態(重載/模版):

重載

int getMax(int param1,int param2);

double getMax(double param1,double param2);

模版:

template<typename T>

T getMax(T param1,T param2)

{

return param1>param2?param1:param2;

}

運行期多態(虛函數):

class Base

{

public:

virtual ~Base(){}

virtual void fun(){cout<<"Base::fun"<<endl;}

};

class Derived:public Base

{

public:

virtual void fun(){cout<<"Derived::fun"<<endl;}

};

main()

{

Base *pB=new Derived;

pB->fun();

}

總結:

應用形式上:

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

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

思維方式上:

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章