【发布时间】:2019-09-10 08:26:26
【问题描述】:
小问题:
C++ STL 实现使用vector_base 结构/类(处理资源和分配器)作为std::vector 的基类,而不是使用组合,有什么原因吗?强>?
加长版:
在提高我对 C++ 知识的“追求”中,我一直在尝试重新实现 Vector 类,主要是符合 std:: 的。我想我已经很好地理解了为什么使用分配器是明智的,以及为什么您实际上希望所有内存处理都在一个单独的类/结构(RAII 和所有这些)中,但我不明白我们为什么要std::vector从该类继承而不是将其作为私有成员。
例如,LLVM 和 gcc 都使用继承。
另一方面,我发现构造函数和赋值运算符(尤其是move-types)使用组合更容易处理。
我只是暴露了我对语言的肤浅知识吗?
作为一个例子,我搜索了一些教科书,发现 Stroustroup 的书与他 2013 年的书“C++ 编程语言,第 4编。”使用作文和他的 2014 年“编程:原理与实践,第 2 版”。使用继承!
谁能帮我解释一下?
【问题讨论】: