关于c ++:继承自自身向量的类

Class inherited from a vector of itself

C++中有可能声明这样的类:

1
2
3
4
5
6
class A : public std::vector<A>
{
public:
    A() = default;
    ~A() = default;
}

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

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


只要类被识别为基类,事情就会变得很糟糕(因为运算符或函数接受了基类)。只是不要这样做。修改/扩展尝试的示例尝试可能是std::string-没有。


由于std::vector<>的析构函数是非虚拟的,因此没有必要使派生类的析构函数成为虚拟的——当使用base时,类将不会表现出多态性。

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