c++多态原理探究
c++多態原理探究
- 理論知識
- 多態的實現原理
- 如何證明vptr指針的存在
- 構造函數中能調用虛函數,實現多態嗎
- 1)對象中的VPTR指針什么時候被初始化?
- 2)分析過程
理論知識
?當類中聲明虛函數時,編譯器會在類中生成一個虛函數表
?虛函數表是一個存儲類成員函數指針的數據結構
?虛函數表是由編譯器自動生成與維護的
?virtual成員函數會被編譯器放入虛函數表中
?當存在虛函數時,每個對象中都有一個指向虛函數表的指針(C++編譯器給父類對象、子類對象提前布局vptr指針;當進行howToPrint(Parent *base)函數是,C++編譯器不需要區分子類對象或者父類對象,只需要再base指針中,找vptr指針即可。)
?VPTR一般作為類對象的第一個成員
多態的實現原理
C++中多態的實現原理
當類中聲明虛函數時,編譯器會在類中生成一個虛函數表
虛函數表是一個存儲類成員函數指針的數據結構
虛函數表是由編譯器自動生成與維護的
virtual成員函數會被編譯器放入虛函數表中
存在虛函數時,每個對象中都有一個指向虛函數表的指針(vptr指針)
總結
- 上一篇: 简述汽车故障诊断仪读取和清除故障码的方法
- 下一篇: s3c2440移植MQTT