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