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