向量类和派生向量类之间的区别

Difference between vector and Derived vector class

本文关键字:向量 区别 派生 之间      更新时间:2023-10-16

两者之间有什么区别:

class Derived : public std::vector<Base> {}; 

std::vector<Base> Derived; 

提前谢谢。

在第

一种情况下,Derived是一个可用于声明变量的类。 在第二个Derived是类型为 std::vector<Base> 的变量名。

对于类,可以使用以下代码生成未定义的行为:

void deleter(std::vector<Base>* ptr)
{
    delete ptr;
}

void buggy()
{
    auto ptr = new Derived();
    // ... operations on ptr.
    deleter(ptr);   // Oops.
}

问题是std::vector没有虚拟析构函数,所以删除是未定义的行为。

这是完全不同的两件事。 当您派生一个新类时,您可以添加功能和更改行为。如果将派生类留空,则结果是相同的,但是如果要将来更改它,则结果仍然更好