C++中多态的基本概念以及虚表的基本概念
生活随笔
收集整理的這篇文章主要介紹了
C++中多态的基本概念以及虚表的基本概念
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
多態的基本概念
虛表的基本概念
?
多態的基本概念
多態是一種泛型編程思想(同樣的代碼,實現不同的功能;主要是父類指針調用子類函數【多態的核心】)
虛函數是實現這個思想的語法基礎
使用父類的指針去指向子類的空間【這樣,父類的指針不能調用子類的函數】
如果是虛函數就可以實現父類的指針,調用子類的成員?
虛函數 斜變
如下代碼:
#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(); }程序運行截圖如下:
?
函數的返回值為當前的類的類名
?
注意:虛函數不能是內聯函數(vs不會報錯,編譯的時候會自動把他去掉)
構造函數不能是虛函數
?
虛表的基本概念
如果有一個類為Base,里面有3個虛函數,1個普通的函數,
那么那3個虛函數就會被放到一個列表里面,以0x00000000結尾,
如果子類有重寫,創建對象時就會覆蓋掉這個虛函數;
因此那些指向子類的父類指針,就能調用子類寫的函數了!
【注意,每一個對象都有自己的一個列表】
總結
以上是生活随笔為你收集整理的C++中多态的基本概念以及虚表的基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt工作笔记-绘制静态折线图
- 下一篇: QML中的import与C++中的区别与