静态多态与动态多态

多态的字面含义:具备多种不一样的形态。算法

关键字:重载/模版和虚函数编程

类型:编译期多态(静态多态,早绑定)和运行期多态(晚绑定)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();

}

总结:

应用形式上:

静多态是发散式的,让相同的实现代码应用于不一样的场合。

动多态是收敛式的,让不一样的实现代码应用于相同的场合。

思惟方式上:

静多态是泛型式编程风格,它看重的是算法的普适性。

动多态是对象式编程风格,它看重的是接口和实现的分离度。

相关文章
相关标签/搜索