注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

和申的个人主页

专注于java开发,1985wanggang

 
 
 

日志

 
 

C++关于自动释放内存的重载程序。CNewClass  

2012-10-31 14:17:19|  分类: C/C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

template <typename TYPE>
class CNewClass
{
 TYPE* pClass;
public:
 CNewClass ()
 {  pClass = new TYPE;  }
 ~CNewClass()
  {  if ( pClass ) delete pClass ; }
  operator TYPE* () const  { return pClass; }
 };
class CTest
{
 int a;
public:
 CTest() : a(10) { }
 ~CTest() {}
};

实际调用:
 {
  CNewClass<CTest> ob;
  Test* p = (CTest*)ob;
 }

CNewClass类的核心思想是,能让你的代码不用写 new 与 delete,因为写了new经常忘记写delete导致内存泄漏。
CNewClass在构造函数中会new对象,当离开作用域时,由于析构函数会自动调用,于是CNewClass在兮构函数中使用了delete删除内存。
至于为什么要写个CTest,完全是为了测试CNewClass的。
当然,要是你没看过C++模板方面的书,这段代码是很难看的,但有个简单的方法,你将CNewClass类中的TYPE换成CTest,就是这段代码的真实意思。

  评论这张
 
阅读(455)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016