请问在这种情况下用不用自己写一个析构函数(C++)?

来源:百度知道 编辑:UC知道 时间:2024/08/23 12:29:17
定义一个类,类的一个私有数据成员是指针p,默认构造函数中给指针赋值为0,在一个公有函数中用到了“new”对此指针动态分配内存。那么要不要写一个析构函数把它delete掉?
例如:
if(p!=0)
delete p;

谢谢

如你所说,是在公有函数里使用new分配内存的,最好是在该函数内部最后delete掉。因为有可能某个类对象的该函数在程序中未使用,写在析构函数里会导致每次对象生命期结束的时候都执行一次delete p。当然,如果在该公有函数内部不能把指针delete掉(比如要返回该指针),那就必须在析构函数中delete它。
ps:delete之前不用判断指针是否为0。因为c++保证了如果指针操作数为0的话,delete表达式不会调用操作符delete()。