c++ 虚表
轉(zhuǎn)載:https://www.cnblogs.com/hushpa/p/5707475.html
轉(zhuǎn)載:https://blog.csdn.net/haoel/article/details/1948051/
-------------------------------------------------------
虛表和虛指針都是建立在類的基礎(chǔ)上而言的
1.虛表屬于類,虛指針屬于類對象
1)虛表屬于類,而不屬于類對象
一個類可以創(chuàng)建若干個對象,每個對象都有一個虛指針,但是所有對象的虛表只有一個
2)虛指針屬于類對象
類是沒有虛指針這個概念的,只有類創(chuàng)建的對象才有虛指針
3)虛表在編譯期就建立好了,而虛指針是在類對象的構(gòu)造函數(shù)中被初始化
2.虛表的繼承
若父類是含有虛表,那么子類也含有虛表,只是子類的虛表是繼承于父類,或者說子類與父類共享一張?zhí)摫?/p>
1)單繼承
父類含有虛函數(shù),那么單繼承后,含有公共函數(shù)的部分,虛表中對應(yīng)的函數(shù)的地址就會變成子類的函數(shù)的地址
2)多繼承
多個父類都有虛函數(shù),那么多繼承后,子類按照繼承順序含有多張?zhí)摫?#xff0c;每個虛表中含有公共函數(shù)的部分,地址都將變成子類函數(shù)的地址
具體虛表分布圖:C++虛函數(shù)表分析(轉(zhuǎn)載:https://www.cnblogs.com/hushpa/p/5707475.html)
3.如何訪問虛表中的函數(shù)
訪問原理:虛表存放在類對象的地址的開頭前4個字節(jié),虛表的本質(zhì)是函數(shù)指針數(shù)組,每個指針也占4個字節(jié)
訪問方法: C++ 虛函數(shù)表解析(轉(zhuǎn)載:https://blog.csdn.net/haoel/article/details/1948051/)
總結(jié)
- 上一篇: VB对象及其属性、事件和方法
- 下一篇: 运用BFS算法实现北京地铁路线换乘系统