c++ 形参用指针 还是对象_C语言:聚会上,我发现只有我没有对象!
多態
這時候傳來了門鈴聲,Linus大神拎著一瓶酒進來,要找C小伙兒喝酒,
他說道:“別聽Java, Python, JavaScript他們瞎BB,你也有對象,也能進行面向對象的編程!我給你舉個例子。”
“這個結構體包含了兩個函數指針,一個用來計算圖形的面積,另外一個把這個圖形畫出來。我們把這個結構體叫做虛函數表。”
“這有什么用啊?” ?
“在你的Shape中,添加一個指向該函數表的指針就行了。” Linus回答。?
????????C和Go都是一臉茫然。?
?“蠢材, 你們想想啊,當你創建一個子類對象的時候,比如Rectangle, 把那個虛函數指針vptr指向另外一組函數,會怎么樣?”?
兩人還是不懂,Linus只好繼續畫圖:?
??????
現在C有點明白了, 無論是Rectangle對象,還是Square對象,在調用Shape_area方法的時候, 都需要通過vptr這個指針找到虛函數表中的area方法,對于Rectangle,找到的是Rectangel_area方法,對于Square,找到的是Square_area方法。?
struct Rectangle *r = Rectangle_create(5,5,10,10);
Shape_area((struct Shape *) r);
“其實吧,你的兄弟C++的多態實現原理也是類似的!在運行時查找真正的函數去執行。” ?Ken 總結到。??
?“對,這種函數指針的使用方法太常見了,在我的Linux操作系統中也會定義類似的東西” Linus接口道,?
?“只要IO設備提供這幾個函數的實際定義,就可以將File結構體的函數指針指向對應的實現,那就實現了用同一套接口操作不同的IO設備。”
?C語言高興起來:“哈哈,我就說我的指針很厲害吧,這些全是通過指針來實現的。”?
“是啊,別聽Java, Python, JavaScript他們瞎BB,你也有對象,也能進行面向對象的編程!”? C語言說道:“走,喝酒去!”
作者:zl1zl2zl3原文鏈接:https://blog.csdn.net/zl1zl2zl3/article/details/87892880更多專題1
勤勉于現在、成就于未來——20072線下火
熱開班!!
2
熱烈歡迎隴東學院信息工程學院呂院長蒞臨
西安華清指導工作
3
2020屆本科生年薪百萬,入選華為“天才少
年”!
華清遠見2020高校助學計劃現已正式啟動!百萬在線精品課程全科覆蓋,免費開放立刻掃碼加小編申請掃碼關注
帶你逆襲
您點的每個贊,我都認真當成了喜歡總結
以上是生活随笔為你收集整理的c++ 形参用指针 还是对象_C语言:聚会上,我发现只有我没有对象!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件系统服务器管理论文,Linux管理磁
- 下一篇: 现行高考政策公平 辩论_为这些考生高考加