首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

delete的一个有关问题

2012-02-13 
delete的一个问题#include iostreamusingnamespacestdclassabcvoiddel(abc*pobj){deletepobj}classab

delete的一个问题
#include <iostream>
using   namespace   std;
class   abc;
void   del(abc   *pobj){
delete   pobj;
}

class   abc{
public:
abc(){
printf( "abc\r\n ");
}
~abc(){
printf( "~abc\r\n ");
}
};


int   main()
{
abc   *pobj   =   new   abc;
del(pobj);   //     delete   pobj;
}

这里del(pobj);和delete   pobj;有什么区别?
执行结果不一样啊

[解决办法]
问题在于定义函数del()时, 类abc还没有定义.编译器从 "class abc; "语句只知道abc是个类,对它有无析构函数以及析构函数的地址一概不知.因此没法对 "delete pobj "生成调用析构函数的代码(你编译时没注意有warning信息吗?).
把del()的定义放到abc定义的后面,执行结果就一样了.

热点排行