簡體   English   中英

用戶定義的容器是std :: vector的包裝器,是繼承還是包含std :: vector?

[英]Should a user-defined container that is a wrapper for std::vector, inherit or contain std::vector?

用戶定義的容器是std :: vector的包裝器,是繼承還是包含std :: vector?

我有一個應該是容器的類。 我看到兩個選擇:

1)從向量繼承2)有一個私有成員向量並覆蓋所有向量函數,使我的容器充當向量

我不確定這只是一個風格問題,還是一種方式從根本上比另一種更好?

我想要添加的額外功能很少,很少有數據成員和函數。 通常,使用向量中的數據將是方便的功能。

首先,STL容器不應該被繼承。 他們甚至沒有虛擬析構函數。

其次,選擇合成/聚合以支持繼承總是更可取,因為這是一種較低的耦合技術,對代碼的限制/要求較少。

有關詳細信息,請參閱此答案 ,此問題已經提出了很多次。

這里有趣的讀到這個主題 - 你不能從std :: vector繼承

與標題所暗示的不同,從std :: vector繼承是可以的,最后它更像是一個架構問題。 它有助於重用或編碼復雜性嗎? 通過這樣做,它是否更容易理解,維護和調試代碼?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM