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 ......

原文地址:https://www.cnblogs.com/alex-zhou/p/4213944.html