c++ - 作为 std::vector 包装器的用户定义容器应该继承还是包含 std::vector?

标签 c++ vector

作为 std::vector 包装器的用户定义容器应该继承还是包含 std::vector?

我有一个应该是容器的类。我看到两个选项:

1) 从vector继承 2) 有一个私有(private)成员 vector 并覆盖所有 vector 函数以使我的容器充当 vector

我不确定这是否只是风格的问题,还是从根本上来说更好 比另一个?

我想添加的额外功能很小,这里的数据成员和函数很少 在那里。大多数情况下,处理 vector 中的数据将是方便的功能。

最佳答案

首先,STL容器不应该被继承。他们甚至没有虚拟析构函数。

其次,选择组合/聚合而不是继承总是更可取的,因为这是一种耦合度较低的技术,对代码的限制/要求较少。

参见 this answer有关详细信息,这个问题已被多次提出。

关于c++ - 作为 std::vector 包装器的用户定义容器应该继承还是包含 std::vector?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21151785/

相关文章:

c++ - 保存源函数的最佳方式

c++ - 使用指南在函数签名中推导模板参数

python - 生成总和等于 0 的 N 个随机单位向量(Python)

c++ - 将字符串解析为结构变量

c++ - 使用 graphviz 绘制自定义 BGL 图

c# - 如何使用非托管 C++ 中的自定义绑定(bind)连接到 WCF 服务

c++ - 为什么是 undefined reference ?

c++ - 使用四元数围绕轴旋转 vector

c++ - 如何使用const_reference类型声明变量并赋值给它,即front()函数的返回值

c++ - 传递给 GTK 回调时取消引用 C++ 中的字符串 vector