zoukankan      html  css  js  c++  java
  • 多态

    多态含义

      不同的对象收到相同的消息做出了不同的反应,比如让动物叫,小猫发出喵喵,小狗发出汪汪。

      多态性的实现和联编有关。其中在运行之前就完成的联编称为静态联编,而在程序运行时才完成的联编叫动态联编。

      静态联编是系统在编译时就决定如何实现某一动作,效率高,但是要求编译时就知道函数的全部信息,并且不够灵活。而动态联编是系统在运行时动态实现某一动作,更灵活。

      静态多态性是通过函数重载和模板实现的。

      动态多态性是通过虚函数来实现的。   

    虚函数

      虚函数是函数重载的另一种表现形式。

      为什么需要引入虚函数?

      基类的对象指针可以指向它的公有派生的对象,但是当它指向公有派生对象时,它只能访问派生类中从基类继承来的成员,而不能访问公有派生类中定义的成员。

      如果在基类中定义了虚函数,virtual会指示编译器,在运行时确定所要调用的函数。

      虚函数与重载函数的关系:

      虚函数是函数重载的另一种形式:在派生类中重新定义基类的虚函数。

      普通函数重载时,要求函数的参数或者参数类型必须有所不同,函数的返回类型可以不同;但是重载一个虚函数时候,要求函数名、返回类型、参数个数、参数的类型和顺序与基类中的虚函数原型完全相同。

    纯虚函数和抽象类

      在基类中说明的一个虚函数,在基类中没有具体的定义,没有函数体,但要求在它的派生类中根据需要对它进行定义。

      一个类中有一个虚函数,那么称这个类为抽象类,只能作为其他类的基类,不能建立抽象类对象。

    虚基类

      一个类有多个直接基类,这些直接基类有一个共同的基类,某个成员通过多条派生类继承时,希望只产生一个派生类。

      虚基类可以解决二义性的问题

  • 相关阅读:
    stack2
    xctf 实时数据监测
    note-service2
    stack pivot学习
    sctf_2019_easy_heap 利用off-by-null构造出double free来向任一地址写入(经典)
    ciscn_2019_s_1 unlink或者of-by-null
    starctf_2019_babyshell 绕过循环检测注入shellcode
    sublime 安装package control
    windows上安装nodejs,升级npm,安装webpack指南
    mysql 常见语句
  • 原文地址:https://www.cnblogs.com/juanzhi/p/12870170.html
Copyright © 2011-2022 走看看