c++多态原理探究
c++多態(tài)原理探究
- 理論知識(shí)
- 多態(tài)的實(shí)現(xiàn)原理
- 如何證明vptr指針的存在
- 構(gòu)造函數(shù)中能調(diào)用虛函數(shù),實(shí)現(xiàn)多態(tài)嗎
- 1)對(duì)象中的VPTR指針什么時(shí)候被初始化?
- 2)分析過程
理論知識(shí)
?當(dāng)類中聲明虛函數(shù)時(shí),編譯器會(huì)在類中生成一個(gè)虛函數(shù)表
?虛函數(shù)表是一個(gè)存儲(chǔ)類成員函數(shù)指針的數(shù)據(jù)結(jié)構(gòu)
?虛函數(shù)表是由編譯器自動(dòng)生成與維護(hù)的
?virtual成員函數(shù)會(huì)被編譯器放入虛函數(shù)表中
?當(dāng)存在虛函數(shù)時(shí),每個(gè)對(duì)象中都有一個(gè)指向虛函數(shù)表的指針(C++編譯器給父類對(duì)象、子類對(duì)象提前布局vptr指針;當(dāng)進(jìn)行howToPrint(Parent *base)函數(shù)是,C++編譯器不需要區(qū)分子類對(duì)象或者父類對(duì)象,只需要再base指針中,找vptr指針即可。)
?VPTR一般作為類對(duì)象的第一個(gè)成員
多態(tài)的實(shí)現(xiàn)原理
C++中多態(tài)的實(shí)現(xiàn)原理
當(dāng)類中聲明虛函數(shù)時(shí),編譯器會(huì)在類中生成一個(gè)虛函數(shù)表
虛函數(shù)表是一個(gè)存儲(chǔ)類成員函數(shù)指針的數(shù)據(jù)結(jié)構(gòu)
虛函數(shù)表是由編譯器自動(dòng)生成與維護(hù)的
virtual成員函數(shù)會(huì)被編譯器放入虛函數(shù)表中
存在虛函數(shù)時(shí),每個(gè)對(duì)象中都有一個(gè)指向虛函數(shù)表的指針(vptr指針)
總結(jié)
- 上一篇: 简述汽车故障诊断仪读取和清除故障码的方法
- 下一篇: 保险十年到期能取钱吗