C++中多态的基本概念以及虚表的基本概念
生活随笔
收集整理的這篇文章主要介紹了
C++中多态的基本概念以及虚表的基本概念
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
目錄
多態(tài)的基本概念
虛表的基本概念
?
多態(tài)的基本概念
多態(tài)是一種泛型編程思想(同樣的代碼,實(shí)現(xiàn)不同的功能;主要是父類指針調(diào)用子類函數(shù)【多態(tài)的核心】)
虛函數(shù)是實(shí)現(xiàn)這個思想的語法基礎(chǔ)
使用父類的指針去指向子類的空間【這樣,父類的指針不能調(diào)用子類的函數(shù)】
如果是虛函數(shù)就可以實(shí)現(xiàn)父類的指針,調(diào)用子類的成員?
虛函數(shù) 斜變
如下代碼:
#include <iostream> using namespace std;class Base{public:virtual Base& print(){Base base;cout << "Base print called" << endl;return base;} };class SUBClass: public Base{public:SUBClass& print(){SUBClass subclass;cout << "SUBClass called" << endl;return subclass;} };void main(){Base *base = new SUBClass;base->print();getchar(); }程序運(yùn)行截圖如下:
?
函數(shù)的返回值為當(dāng)前的類的類名
?
注意:虛函數(shù)不能是內(nèi)聯(lián)函數(shù)(vs不會報(bào)錯,編譯的時(shí)候會自動把他去掉)
構(gòu)造函數(shù)不能是虛函數(shù)
?
虛表的基本概念
如果有一個類為Base,里面有3個虛函數(shù),1個普通的函數(shù),
那么那3個虛函數(shù)就會被放到一個列表里面,以0x00000000結(jié)尾,
如果子類有重寫,創(chuàng)建對象時(shí)就會覆蓋掉這個虛函數(shù);
因此那些指向子類的父類指針,就能調(diào)用子類寫的函數(shù)了!
【注意,每一個對象都有自己的一個列表】
總結(jié)
以上是生活随笔為你收集整理的C++中多态的基本概念以及虚表的基本概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt工作笔记-绘制静态折线图
- 下一篇: QML中的import与C++中的区别与