美文网首页
动态多态、静态多态

动态多态、静态多态

作者: 王王王王王景 | 来源:发表于2019-07-15 09:41 被阅读0次

C++支持多种形式的多态,从表现的形式来看,有虚函数、模板、重载等,从绑定时间来看,可以分成静态多态和动态多态,也称为编译期多态和运行期多态。

一、动态多态

动态多态的设计思想:对于相关的对象类型,确定它们之间的一个共同功能集,然后在基类中,把这些共同的功能声明为多个公共的虚函数接口。各个子类重写这些虚函数,以完成具体的功能。客户端的代码(操作函数)通过指向基类的引用或指针来操作这些对象,对虚函数的调用会自动绑定到实际提供的子类对象上去。

从上面的定义也可以看出,由于有了虚函数,因此动态多态是在运行时完成的,也可以叫做运行期多态,这造就了动态多态机制在处理异质对象集合时的强大威力(当然,也有了一点点性能损失)。

二、静态多态

静态多态的设计思想:对于相关的对象类型,直接实现它们各自的定义,不需要共有基类,甚至可以没有任何关系。只需要各个具体类的实现中要求相同的接口声明,这里的接口称之为隐式接口。客户端把操作这些对象的函数定义为模板,当需要操作什么类型的对象时,直接对模板指定该类型实参即可(或通过实参演绎获得)。
常见:模板、重载

相关文章

  • 动态多态、静态多态

    C++支持多种形式的多态,从表现的形式来看,有虚函数、模板、重载等,从绑定时间来看,可以分成静态多态和动态多态,也...

  • 多态和虚函数

    多态可以分为静态多态和动态多态 静态多态:函数重载,泛型编程,编译器在编译期间内完成的,编译器根据函数实参的类型可...

  • c++ ——为什么要使用多态?

    多态可分为静态多态和动态多态 静态多态就是在系统编译期间就可以确定程序执行到这里将要执行哪个函数,比如函数的重载。...

  • 18 类和对象--多态

    我们知道类的3大特性是封装,继承,多态。前2个将差不多了,多态其实也不难。 多态的基本概念 多态分为静态多态和动态...

  • 多态(1)静态多态与动态多态

    多态(1)静态多态与动态多态 什么是多态 从字面上理解就是多种形态的意思。而多态一词最初源自希腊语,其含义便是“多...

  • 多态与重载的区别

    重载可认为是静态的多态,静态联编,发生在编译阶段; 多态是动态的,动态联编,发生在运行阶段; 静态的比动态的效率高...

  • 二继承与多态——第四节、多态

    文章目录1、 从吃烤山药重新认识多态2、 多态前提条件【重点】3、 多态的体现4、 多态动态绑定与静态绑定4、1....

  • 查漏补缺

    C++虚函数: 多态: 静态多态(重载)、动态多态(虚函数) 虚函数 虚函数表:编译器为每个类创建了一个虚函数表...

  • 十六、多态、静态联编和动态联编、虚析构函数、三重

    1.多态2.多态意义3.静态联编和动态联编4.虚析构函数5.重载、重写、重定义 1.什么是多态 1.1浅析多态的意...

  • java面试题汇总(二)

    11、Java中实现多态的机制是什么? 静态的多态:同一个类中,方法名相同,参数列表不同 动态的多态:引用变量的类...

网友评论

      本文标题:动态多态、静态多态

      本文链接:https://www.haomeiwen.com/subject/lmdgkctx.html