在C ++中可以声明这样的类:
class A : public std::vector<A>
{
public:
A() = default;
~A() = default;
}
好吧,从STL容器继承是不好的,隐藏非虚拟析构函数是不好的。
但这样的课程有什么目的吗?它可以用于什么?
答案 0 :(得分:2)
由于std::vector<>
的析构函数是非虚拟的,因此将派生类的析构函数设置为虚拟没有意义 - 当使用base时,您的类将不会以多态方式运行。
但是,使用非多态继承可能会有一些好处,例如,通过覆盖一些vector
函数。
答案 1 :(得分:2)
只要将类识别为基类(由于运算符或函数采用基类),事情就会变得悲惨。只是不要这样做。尝试修改/扩展尝试的示例可能是std :: string - 没有。