日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++虚继承和虚函数和抽象类、接口类,聚合类

發布時間:2024/9/27 c/c++ 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++虚继承和虚函数和抽象类、接口类,聚合类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

虛繼承
虛繼承用于解決多繼承條件下的菱形繼承問題(浪費存儲空間、存在二義性)。
底層實現原理與編譯器相關,一般通過虛基類指針和虛基類表實現,每個虛繼承的子類都有一個虛基類指針(占用一個指針的存儲空間,4字節)和虛基類表(不占用類對象的存儲空間)(需要強調的是,虛基類依舊會在子類里面存在最多一份拷貝);當虛繼承的子類被當做父類繼承時,虛基類指針也會被繼承。
實際上,vbptr 指的是虛基類表指針(virtual base table pointer),該指針指向了一個虛基類表(virtual table),虛表中記錄了虛基類與本類的偏移地址;通過偏移地址,找到虛基類成員,而虛繼承也不用像普通多繼承那樣維持著公共基類(虛基類)的兩份同樣的拷貝,節省了存儲空間。

虛繼承、虛函數
?相同之處:都利用了虛指針(均占用類的存儲空間)和虛表(均不占用類的存儲空間)
?不同之處:

–虛繼承
?虛基類依舊存在繼承類中,只占用存儲空間
?虛基類表存儲的是虛基類相對直接繼承類的偏移

–虛函數
?虛函數不占用存儲空間
?虛函數表存儲的是虛函數地址

模板類、成員模板、虛函數

?模板類中可以使用虛函數
?一個類(無論是普通類還是類模板)的成員模板(本身是模板的成員函數)不能是虛函數

抽象類、接口類、聚合類
?抽象類:含有純虛函數的類
?接口類:僅含有純虛函數的抽象類
?聚合類:用戶可以直接訪問其成員,并且具有特殊的初始化語法形式。滿足如下特點:
–所有成員都是 public
–未定義任何構造函數
–沒有類內初始化
–無基類,也沒有 virtual 函數

總結

以上是生活随笔為你收集整理的c++虚继承和虚函数和抽象类、接口类,聚合类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。