为什么在定位new表达式时一定要显示调用析构函数 为什么在定位new表达式时一定要显示调用析构函数,具体的作用是怎样的》?请说明一下其中的原理 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这种说法不对。试一下下面代码,看看会不会显示ok。class c{public:c();};c::c(){printf("ok");}void main(){c* cc = new c;} cnzdgs 老兄,LZ说的是西狗函数,不是构造函数.等LZ解释其真实意义... 呵呵,没注意,看到new自然想到是构造函数。不知道new与析构函数有何关系。 你也可以不调用析够函数啊, 自己写个函数 在那个函数里 delete你new出的对象。然后用对象调用它就好了。所谓的new出要调用析够函数,是因为把delete语句写析够函数里了而已。。再次强调, new出的东西一定要delete掉 看到7楼的回复觉得大概知道如下情况就明白了自己的问题(虽然我不清楚LZ到底是啥问题- -)new操作符调用时1.调用opetator new分配内存2.调用构造函数delete操作符调用时1.调用西狗函数2.调用operator delete回收内存malloc可认为相当于opetator newfree可认为相当于operator delete 是问,为什么new的要delete吗?当然要了,不然内存会吃完啦,, 一定要显示调用析构函数,我的重点是问这个,。那个new的要delete谁都知的,谢谢大家了 谁说要显式调用析构函数?不光不需要,而且不能,new出来的东西需要delete来间接调用析构函数,因为delete除了调用析构函数还要干别的事。只有一种情况new出来的东西不能调用delete,只能调用析构函数,如下面的调用:BYTE buf[256];CSomeClass* pClass = ::new(buf) CSomeClass();pClass 在使用完成后不能调用delete,当然是否需要调用析构函数完全看你的需求,如果需要就必须显式调用 pClass->~CSomeClass();不过我实在不知道楼主问的是什么问题。 一定要显式调用析构函数很无语啊!我就从没直接调用过析构函数,倒是 delete 用的不少.析构函数是系统在回收变量内存时自动调用的.我就不明白为什么要显示调用 关于线程方面的问题 一有答案 马上结贴!!! VC中怎么获取数组中前几个或者后几个地址中的数据啊,那位帮帮偶啊 SIP协议针对200(ok)消息发出的ACK消息丢失,该如何应对? 与 QQ 或 MSN 的数据通信(外挂,有报酬) 文件的复制、粘贴一般是怎样实现的? 如何把一个数组写入文件? 有趣的问题,大家都来看看 如何给CEditCtrl设置颜色? 菜鸟问题:HANDLE是什么意思?它和HWND有没有什么关系? excel中text类型的长度问题 数据表格计算问题!急急急! 请教一个关于windows剪贴板的问题
class c
{
public:
c();
};c::c()
{
printf("ok");
}void main()
{
c* cc = new c;
}
然后用对象调用它就好了。所谓的new出要调用析够函数,是因为把delete语句写析够函数里了而已。。再次强调, new出的东西一定要delete掉
2.调用构造函数delete操作符调用时1.调用西狗函数
2.调用operator delete回收内存malloc可认为相当于opetator new
free可认为相当于operator delete
是问,为什么new的要delete吗?
当然要了,不然内存会吃完啦,,
BYTE buf[256];
CSomeClass* pClass = ::new(buf) CSomeClass();pClass 在使用完成后不能调用delete,当然是否需要调用析构函数完全看你的需求,如果需要就必须显式调用 pClass->~CSomeClass();不过我实在不知道楼主问的是什么问题。
一定要显式调用析构函数很无语啊!我就从没直接调用过析构函数,倒是 delete 用的不少.析构函数是系统在回收变量内存时自动调用的.我就不明白为什么要显示调用