向量和派生向量类之间的差异

时间:2016-03-21 09:22:28

标签: c++ vector

有什么区别:

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

std::vector<Base> Derived; 

提前感谢。

2 个答案:

答案 0 :(得分:0)

在第一种情况下,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没有虚拟析构函数,所以 删除是未定义的行为。

答案 1 :(得分:0)

它完全是两件不同的事情。当您派生新类时,您可以添加功能并更改行为。 如果你将派生类留空,那么结果是相同的,但如果你想在将来改变它,它仍然会更好