zoukankan      html  css  js  c++  java
  • c++ 类的虚拟机制

    以下类的定义只是为了说明虚拟机制而设计:
    class Animal{
      public
        int getNum();
    }

    class Bird : public Animal
    {
      public:
        int getNum();
    }

    Animal *pa = new Bird();

    1、pa->getNum();此时调用的是Animal类的getNum()

    修改Bird类为:
    class Bird : public Animal
    {
      public:
        int getNum();
        virtual int getAge();
    }

    2、pa->getAge();编译错误:Animal类中不存在getAge()

    重新定义Animal与Bird类:
    class Animal{
      public
        virtual int getNum();
    }

    class Bird : public Animal
    {
      public:
        int getNum();
    }

    3、pa->getNum();此时调用的是Bird类中的getNum()

    -------------------------------------------------------

    class Query{
      public:
        virtual void show() = 0;
    }
    包含纯虚拟函数的类为抽象基类。试图创建一个抽象基类的独立对象会导致编译时刻错误。

    虚拟函数的静态调用:
    假如Query类以及派生类NameQuery定义了虚拟函数 isA();
    //在编译时刻静态调用 isA()
    Query *pq = new NameQuery( "dumbo" );
    pq->Query::isA();//破坏了虚拟机制,调用基类的isA()
  • 相关阅读:
    3.4 抓取猫眼电影排行
    2.5 代理的基本原理
    第二章 爬虫基础
    1.8 爬虫框架的安装
    Python序列化
    CVE-2020-1938 Apache-Tomcat-Ajp漏洞复现
    Python定制类
    Apache Tomcat DDOS
    内网端口转发工具
    内网渗透思路简单介绍
  • 原文地址:https://www.cnblogs.com/handongdong/p/2223772.html
Copyright © 2011-2022 走看看