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

相關文章
相關標籤/搜索