多态性

C++三大特性多态,之前以为只有重载,看到虚函数这边才知道多态有俩种:静态和动态,下面是网上转载mark下。

多态性的概念

    在面向对象的概念中,多态性是指不同对象接收到相同消息时,根据对象类的不同产生不同的动作。多态性提供了同一个接口可以用多种方法进行调用的机制,从而可以通过相同的接口访问不同的函数。具体地说,就是同一个函数名称,作用在不同的对象上将产生不同的操作。

    多态性提供了把接口与实现分开的另一种方法,提高了代码的组织性和可读性,更重要的是提高了软件的可扩充性。

编译时的多态性和运行时的多态性

 ⑴ 联编

联编也称绑定,是指源程序在编译后生成的可执行代码经过连接装配在一起的过程。联编分为两种:静态联编和动态联编。

① 静态联编

在运行前就完成的联编,又称前期联编。这种联编在编译时就决定如何实现某一动作,因此要求在程序编译时就知道调用函数的全部信息。这种联编类型的函数调用速度很快,效率也很高。

② 动态联编

在运行时动态地决定实现某一动作,又成后期联编。这种联编要到程序运行时才能确定调用哪个函数,提供了更好的灵活性和程序的易维护性。

⑵ 编译时的多态性和运行时的多态性

由静态联编支持的多态性称为编译时的多态性或静态多态性,也就是说,确定同名操作的具体操作对象的过程是在编译过程中完成的。C++用函数重载和运算符重载来实现编译时的多态性。

由动态联编支持的多态性称为运行时的多态性活动太多态性,也就是说,确定同名操作的具体操作对象的过程是在运行过程中完成的。C++用继承和虚函数来实现运行时的多态性。

posted @ 2012-12-31 10:25  tongdh  阅读(303)  评论(0编辑  收藏  举报