簡體   English   中英

vector_base繼承與組合

[英]vector_base inheritance vs composition

簡短問題:

有沒有理由為什么C ++ STL實現使用vector_base結構/類(處理資源和分配器)作為std::vector基類而不是使用組合

更長版本:

在我的“追求”中,為了提高我對C ++的了解,我一直在嘗試重新實現一個Vector類,主要是std:: compliant。 我想我已經理解為什么使用分配器是明智的,為什么你真的想要在一個單獨的類/結構(RAII和所有那些)中的所有內存處理但是我不明白為什么我們想要std::vector從該類繼承而不是將其作為私有成員。 例如,LLVMgcc都使用繼承。 另一方面,我發現構造函數和賦值運算符(尤其是move -types)使用組合更容易處理。

我只是暴露了我對語言的膚淺知識嗎?

作為一個例子,我搜索了一些教科書,我發現Stroustroup的書有他的“模擬重新實現”標准的不同版本(只是為了讓我更加困惑!)與他2013年的書“The C ++ Programming language,4th ed。”。 使用作文和他的2014年“編程:原則與實踐,第2版”。 使用繼承!

任何人都可以幫助我解決一些問題?

libc ++使用私有繼承,libstdc ++使用受保護的繼承。

受保護和私有繼承在很大程度上是組合語法變體

暫無
暫無

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

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