我试图重写向量类,并添加自定义的功能,但是从Java未来我不是很熟悉的覆盖,在继承的力学和诸如此类的东西。
Answer 1:
标准容器不是多态的,所以你不能覆盖自己的行为; 并且没有保护成员,所以没有延长他们一点从他们那里继承。
当你能做到这一点,正如另一个答案的建议,你将不得不重新实现所有构造函数(或者,自2011年以来,明确继承它们),因为这些是不能继承的; 而有一个人多态对待它,例如通过指针的基类,上课的时候不支持删除的危险。
相反,通过公共接口上运行非成员函数添加功能:
template <typename T>
void frobnicate(std::vector<T> & v) {for (auto & x : v) frobnicate(x);}
更一般地,遵循标准库的例子,编写模板在一般的迭代器区间操作:
template <typename InputIterator>
void frobnicate(InputIterator begin, InputIterator end) {
while (begin != end) frobnicate(*begin++);
}
文章来源: How to override c++ class like vector