MFC控件指针公用释放方法[void* | 指针的引用]
来源:农民伯伯 责任编辑:栏目编辑 发表时间:2013-07-02 01:30 点击:次
前言
看见重复的代码就想封装,这个习惯转入C++之后也没改,即使效率有所影响也尽力去封装,比如在类的析构函数里面释放指针,一个个判断然后一个个delete然后再设置为NULL,就想着写一个公用释放指针的方法,也就有了下面的问题一。
文章
1. C++返回引用类型 指针的引用
正文
一、问题函数
本意:传入一个指针,判断指针是否为空,不为空的话就释放掉,这样在析构函数里面不用一段段重复写函数内的那段代码,封装后只用写如"FreeObj(pBtnSave);"就可以了。
BOOL FreeObj(void* pObj)
{
if(pObj)
{
delete pObj;
pObj = NULL;
return TRUE;
}
return FALSE;
}
{
if(pObj)
{
delete pObj;
pObj = NULL;
return TRUE;
}
return FALSE;
}
现实证明这种方法是行不通的,执行此方法后pBtnSave指针仍然不为空,然后想到了指针引用,能够定义如下函数,但是使用起来很复杂(- - # 事实上不知道怎么使用):
BOOL FreeObj(void* &pObj)
二、折中办法
#define FreeObj(pObj) if(pObj){delete pObj;pObj=NULL}
只是使用的话就不能带分号了,因为这是一个宏,然后发现C++宏好强大,这样写效率也应该没什么好说的了,但是被同事提醒,宏很强大但是切忌乱用。
三、 一个指针的引用例子
void FreeObj(int* &pObj)
{
if(pObj){
delete pObj;
pObj = NULL;
}
}
//测试代码
int*
{
if(pObj){
delete pObj;
pObj = NULL;
}
}
//测试代码
int*
相关新闻>>
- 发表评论
-
- 最新评论 更多>>