C++的多态

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

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

 

举个最简单的例子:函数

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

Base.h指针

#include <iostream>对象

class Base {继承

public:io

  virtual  void  shoot() {面向对象编程

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

}

}

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

相关文章
相关标签/搜索