多态的字面含义:具备多种不一样的形态。算法
关键字:重载/模版和虚函数编程
类型:编译期多态(静态多态,早绑定)和运行期多态(晚绑定)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();
}
总结:
应用形式上:
静多态是发散式的,让相同的实现代码应用于不一样的场合。
动多态是收敛式的,让不一样的实现代码应用于相同的场合。
思惟方式上:
静多态是泛型式编程风格,它看重的是算法的普适性。
动多态是对象式编程风格,它看重的是接口和实现的分离度。