继承自自身向量的类

时间:2016-01-04 20:57:40

标签: c++ inheritance stdvector

在C ++中可以声明这样的类:

class A : public std::vector<A>
{
public:
    A() = default;
    ~A() = default;
}

好吧,从STL容器继承是不好的,隐藏非虚拟析构函数是不好的。

但这样的课程有什么目的吗?它可以用于什么?

2 个答案:

答案 0 :(得分:2)

由于std::vector<>的析构函数是非虚拟的,因此将派生类的析构函数设置为虚拟没有意义 - 当使用base时,您的类将不会以多态方式运行。

但是,使用非多态继承可能会有一些好处,例如,通过覆盖一些vector函数。

答案 1 :(得分:2)

只要将类识别为基类(由于运算符或函数采用基类),事情就会变得悲惨。只是不要这样做。尝试修改/扩展尝试的示例可能是std :: string - 没有。