【问题标题】:Difference between vector and Derived vector class向量和派生向量类之间的区别
【发布时间】:2016-03-21 09:22:28
【问题描述】:

有什么区别:

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

std::vector<Base> Derived; 

?

提前致谢。

【问题讨论】:

  • 蓝图和建筑有什么区别?

标签: c++ vector


【解决方案1】:

在第一种情况下,Derived 是一个可用于声明变量的类。第二个Derivedstd::vector&lt;Base&gt; 类型的变量名。

在类的情况下,可以使用以下代码产生未定义的行为:

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


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

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

【讨论】:

    【解决方案2】:

    这完全是两种不同的东西。当您派生一个新类时,您可以添加功能并更改行为。 如果你把派生类留空,结果是一样的,但如果你想在将来改变它,它会更好

    【讨论】:

    • 好吧,如果你把派生类留空——它们就不是一回事了,因为你不能通过派生类实例调用基类的构造函数。
    猜你喜欢
    • 1970-01-01
    • 2021-04-22
    • 2023-03-03
    • 2013-03-28
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 2015-08-11
    • 2010-11-01
    相关资源
    最近更新 更多