我可以从 std::array 导出 class 吗?

Can I derive a class from `std::array`?

一般标准容器 类 不打算派生自,例如他们有非虚析构函数。

但是,我注意到 std::array 根本没有定义析构函数(至少在 GNU 库中)。

这是否意味着 std::array 是安全的?

我不打算重载它的任何成员函数,只是增加了几个(主要是将其用作固定大小的队列)。

仅当您要使用多态性和 delete 您的新 class 作为 std::array 时才需要虚拟析构函数。这可能不是您的用例。如果是,那你就倒霉了。

不确定您需要多少现有 std::array 功能,因此这对您来说可能不是一个好的选择,但一般目的建议是更喜欢组合而不是继承。使用 std::array 作为 class 的成员,添加您想要的新功能并公开您需要的现有 std::array 功能。

使用非虚拟析构函数 non-publicly 从 class 派生是安全的。只有 public 继承可能不安全。

std::array 有一个析构函数,无论是否已声明。所有 classes 都有析构函数。如果基 class 析构函数不是虚拟的,那么通过基 class 指针删除对象是 always UB。 std::array 在这方面没有什么不同。