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
總結
- 上一篇: js 正则表达式 整合
- 下一篇: 模式-视图-控制器模式2.0