C++ 创建指向类对象的指针数组

C++ 创建指向类对象的指针数组,c++,object,polymorphism,new-operator,C++,Object,Polymorphism,New Operator,问题: 创建至少四个指向读卡器对象的指针的数组。使用New运算符创建至少四个指向派生类对象的指针,并将它们分配给数组 我不确定我做得对不对 Reader是基类。约翰、大卫、丹尼尔、马克是派生类 int main(void) { Reader *obj[4]; obj[0] = new John(); obj[1] = new David(); obj[3] = new Daniel(); obj[2] = new Mark(); } 这是否正确?

问题:

创建至少四个指向读卡器对象的指针的数组。使用New运算符创建至少四个指向派生类对象的指针,并将它们分配给数组

我不确定我做得对不对

Reader是基类。约翰、大卫、丹尼尔、马克是派生类

int main(void)
{
     Reader *obj[4];

    obj[0] = new John();
    obj[1] = new David();
    obj[3] = new Daniel();
    obj[2] = new  Mark();

}

这是否正确?

您的代码是正确的


正如@sharptooth所建议的,对分配的
obj[]
s执行
delete
。在C++ >代码>新< /COD>分配内存和<代码>删除< /COD> DealOrth.t/< P>我看来很好。添加
返回0到最后。你有一个内存泄漏-你以后必须
删除它们。@Segey:这里的建议不好。他被特别要求使用指针数组。这似乎是一种家庭作业。我完全支持std::vector,但在这种情况下,这不是一个好建议。特别是如果他想要多态性。@DeadMG你认为变形指针不能存储在std::vector中吗?在这种情况下,需要使用
delete[]obj
来正确地解构和删除array@eFloh删除[]obj是个糟糕的主意。这是错误的obj'是一个局部变量。它未分配,因此您不能删除它。当它超出范围时将被销毁。因为指针没有析构函数,所以这种销毁不会起任何作用。但是,obj[0-3]包含指向已分配对象的指针。必须使用“delete obj[0];”等删除这些代码。请注意,由于这是不完整的代码,我们无法判断它是否正确。读者有虚拟析构函数吗?对不起,在没有注意到这一点的情况下,突然提出了@sharptooth的建议。我主要关注这样一个事实:应该使用new[]分配数组,并使用delete的数组变量销毁数组。。。