如何删除在cpp中main中创建的对象

时间:2015-07-10 12:44:40

标签: c++ visual-c++

当我运行代码时,我得到" b fn 破坏b 破坏一个"和运行时错误。问题是删除任何一个对象说b的对象调用类a的析构函数,所以当其他删除尝试删除对象时它会遇到运行时错误,所以任何人都建议,我们如何解决这个问题?

currentProduct

3 个答案:

答案 0 :(得分:4)

您的程序行为未定义。

设置aa = bb;是灾难性的:

  1. 您将尝试两次删除同一个对象。这是未定义的行为。

  2. 您永远不会delete原始aa。这是内存泄漏。

  3. 删除该行,一切都会好的。如果你想测试多态性,那么你可以

    class/*actually, not required*/ a *bb = new b;

答案 1 :(得分:1)

使用

class a *aa = new a;
class b *bb = new b;
aa = bb;

您不再引用new a

所以

delete aa; // delete 'new b'
delete bb; // delete 'new b' a second time

双删除相同的指针。

答案 2 :(得分:0)

删除此

aa = bb;

您将获得输出

a fn
destruct a
destruct b
destruct a

成功