析构函数不是为什么

析构函数不是为什么

本文介绍了析构函数不是为什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


  class  
B

{

B()

{

}

~B()

{

printf(" B des"
);< br />

}

};

$
class
A
$
{

B * b;

A()

{

b = new
B();

}

¥ b $ b~A()

{

如果
(b)

免费(b);

}



}

$
class
C

{

A * a;

C()

{

a = new
A();

}

~C()

{

如果
(a)

免费A;

}



}





main()

{

C c;

}




然而,没有调用析构函数的原因是你使用的是"free"。你应该使用"删除"代替。这将调用适当的析构函数,然后释放由"new"分配的内存。只应使用
free()释放使用malloc()分配的内存。


class
 B
{
B()
{
}
~B()
{
printf(" B des" );<br/>
}
};

class A
{
B *b;
A()
{
b = new B();
}

~A()
{
if (b)
free(b);
}

}

class C
{
A *a;
C()
{
a = new A();
}
~C()
{
if (a)
free A;
}

}


main()
{
C c;
}

解决方案


这篇关于析构函数不是为什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-29 15:08