有什么区别:
class Derived : public std::vector<Base> {};
和
std::vector<Base> Derived;
提前感谢。
答案 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)
它完全是两件不同的事情。当您派生新类时,您可以添加功能并更改行为。 如果你将派生类留空,那么结果是相同的,但如果你想在将来改变它,它仍然会更好