多態的字面含義:具有多種不同的形態。
關鍵字:重載/模版和虛函數
類型:編譯期多態(靜態多態,早綁定)和運行期多態(晚綁定)
編譯期多態(重載/模版):
重載
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();
}
總結:
應用形式上:
靜多態是發散式的,讓相同的實現代碼應用於不同的場合。
動多態是收斂式的,讓不同的實現代碼應用於相同的場合。
思維方式上:
靜多態是泛型式編程風格,它看重的是算法的普適性。
動多態是對象式編程風格,它看重的是接口和實現的分離度。