读书人

类里面新new的一个对象要不要在析构函

发布时间: 2012-03-11 18:15:38 作者: rapoo

类里面新new的一个对象要不要在析构函数里面delete掉?
比如:
class AAA
{
public:
AAA() { obj = new BBB(); }

private:
BBB *obj;
}

还要不要自己写一个~AAA() { delect obj; }这样?

[解决办法]
当然要
[解决办法]
还得给AAA增加正确的拷贝构造函数。
[解决办法]
呵呵
我总结下楼上二位的
如果类里有动态分配的内存
1.析构函数要释放,否则内存泄漏.
2.要有拷贝构造函数,否则会有意想不到的错误.
[解决办法]
除非你的内存管理器会自动回收内存,否则你要自己负责这样的内存管理
[解决办法]
FAQ C++ 三大法则那一章讲到

如果你的类里面需要进行动态分配内存的话,就需要三大法则:
1.一个析构函数,来释放你动态申请的内存,即楼主问题中的情况是需要有析构函数来释放内存的
2.一个拷贝构造函数
3.一个赋值操作符
[解决办法]
static的类 你可以不写,在程序的生命周期内 就只有1个实例,实例挂了,程序也就飞了,不用去释放。

普通的类要写。

读书人网 >C++

热点推荐