zoukankan      html  css  js  c++  java
  • C++的多态

        继承、封装、多态是面向对象编程最主要的三个特征,有人说多态是理解C++最难理解的一部分,其实我觉得单单从技术上讲,多态并不难,难的是你需要懂得在何时使用多态,就像封装一样,封装本身不难,难的是你对整个事物和需求的理解,以及如何封装会更好。

    多态的最简单使用:关键字virtual,虚函数是实现多态最核心的概念;记住一句话,父类的指针指向子类的对象。这是实现多态最基本的要领。

    举个最简单的例子:

    父类:Base, 两个子类:firstChild, secondChild;

    Base.h

    #include <iostream>

    class Base {

    public:

      virtual  void  shoot() {

      std::cout<<"base shoot......"<<std::endl;

    }

    }

    firstChild.h

    #include <iostream.h>

    #include "Base.h"

    class firstChild : public Base {

    public :

      virtual void shoot() {

      std::cout<<"firstChild shoot ......"<<std::endl;

    }

    }

    secondChild.h

    #include <iostream>

    #include "Base.h"

    class secondChild : public Base {

    public:

      virtual void shoot(){

      std::cout<<"secondChild shoot......"<<std::endl;

    }

    }

    在main函数里面调用

    #include "Base.h"

    #include "firstChild.h"

    #include "secondChild.h"

    int main(int argc, const char * argv[]){

      Base * first = new firstChild();        //父类的指针指向子类的对象

      Base * seconf = new secondChild();

      first->shoot();          //子类如果覆盖了父类的虚函数,则调用子类的,如果没有覆盖,则调用父类的;

      second->shoot();

      return 0;

    }

    输出结果:

    firstChild shoot......

    secondChild shoot ......

  • 相关阅读:
    线程的简单介绍
    队列Joinablequeue的使用,以及生产者消费者模型的认识
    使用子线程来完成链接循环和通信循环
    使用socketserver实现简单的下载和上传
    类的绑定方法学习
    类的组合-多态-封装等特性的简单学习
    爬虫之亚马逊爬取
    JavaScript 面试中常见算法问题详解
    JavaScript 的 this 指向问题深度解析
    深入理解 JavaScript 中的函数
  • 原文地址:https://www.cnblogs.com/alex-zhou/p/4213944.html
Copyright © 2011-2022 走看看