向量类和派生向量类之间的区别
Difference between vector and Derived vector class
两者之间有什么区别:
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
没有虚拟析构函数,所以删除是未定义的行为。
这是完全不同的两件事。 当您派生一个新类时,您可以添加功能和更改行为。如果将派生类留空,则结果是相同的,但是如果要将来更改它,则结果仍然更好
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 将向量作为类>(值)<向量启动和向量<类>[值]有什么区别
- p_threads初始化中向量和数组之间的区别
- 使用指针向量和非指针向量有什么区别
- C++向量:clear() 和 resize() 之间的区别
- C++ std::vector 创建对象然后添加对象与在向量中创建对象之间的区别?
- 以下向 c++ 向量添加元素的方法有什么区别
- 字符串和向量<string>元素之间的区别
- 向量 <int> V[] 和向量<向量<int> > V 之间的区别
- 向量类和派生向量类之间的区别
- c++ 中向量的 clear() 和 erase() 方法之间的区别
- 向量<类*>和向量有什么区别<Class>?
- 使用向量和指针的双下标重载的区别
- 对的向量和包含两个元素的结构体的向量的内存布局的区别- c++ /STL
- TBB并发向量与STL并发向量的区别
- 这两种比较STL向量的方法有什么区别?