c++ 標準提供了不少容器類,這些為c++的應用提供了很大的便利。但是,總有些時候這些標準容器提供的功能不能完全滿足需求,於是就有人從標準容器上繼承出了自己的類。
那麼,標準容器可以用作基類嗎?
先說結論吧,不推薦,不要用。
為什麼呢?
標準中所用的容器類都沒有虛的析構函式。
沒有虛析構就意味著這些類並不準備被用於繼承。因為當基類沒有虛析構的時候,子類的物件有可能不能被正確的析構。比如說,將子類的指標轉換為基類的指標,在對基類指標呼叫 delete 的時候,如果基類的析構函式不是虛的,那麼子類的析構函式將不會被呼叫。這是不推薦將標準容器作為基類的最主要的原因。
可是我真的想擴充標準容器的功能啊?
兩個方案:
1. 對於基於標準容器的演算法,可以不基於某一種容器擴充套件,而是寫成接受 iterator 的演算法。
這個在裡有不少例子,可以參考。(其實,看看
你可能就已經發現你想擴充的演算法了)簡單的增加乙個演算法都可以使用這種方案。
基於iterator
的演算法具有通用性,可以不只應用與某乙個容器,復用性好,何樂而不為呢。
2. 將標準容器作為類成員。
如果你的類需要一些額外的資料成員,那這就是乙個比較好的方案了。
Python可以多繼承嗎??
物件導向的程式設計帶來的主要好處之一是 的重用,實現這種重用的方法之一是通過繼承機制。繼承完全可以理解成類之間的父與子的關係。例子 class prtutu def init self print prtutu class prtutu1 def init self,a print prtutu1 ...
C 標準容器
1.c 中的容器類包括 順序儲存結構 和 關聯儲存結構 順序儲存結構 包括 vector list deque等 關聯儲存結構 包括 set,map,multiset multimap等。若需要儲存的元素數在編譯器間就可以確定,可以使用陣列來儲存,否則,就需要用到容器類了。2.各種用法 如果經常需要...
C 標準容器
c 裡的容器很多,但可以按照不同的標準進行分類,常見的一種分類是依據元素的訪問方式,分成順序容器 有序容器和無序容器三大類別。容器就是對資料結構的抽象和封裝,即能夠 容納 存放 元素的一些資料結構。c 標準庫里的容器幫助我們實現了最基本和最經典的資料結構,且容器的效能和優化水平已經非常完善,這一塊不...