源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C++之CNoTrackObject类和new delete操作符的重载实例

  • 时间:2022-08-09 18:46 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C++之CNoTrackObject类和new delete操作符的重载实例
本文实例讲述了C++中CNoTrackObject类和new delete操作符的重载,分享给大家供大家参考。具体如下: 头信息:
[u]复制代码[/u] 代码如下:
class CNoTrackObject{  public: //在此出过错,没有加public 默认为类的私有变量,MyThreadData继承这个类后也无法访问成员变量      void* operator new(size_t nSize);      void operator delete(void*);      virtual ~CNoTrackObject(){}  };
实现方法如下:
[u]复制代码[/u] 代码如下:
void* CNoTrackObject::operator new(size_t nSize)  {      //申请一块内存      void* p = ::GlobalAlloc(GPTR , nSize);      return p;  }    void CNoTrackObject::operator delete(void* p)  {      if (p != NULL)      {          ::GlobalFree(p);      }  }
使用过程如下:
[u]复制代码[/u] 代码如下:
struct MyThreadData:public CNoTrackObject  {      MyThreadData* pNext;      int nShortData;  };  for (int i=0;i<10;i++)      {          <span style="color:#ff0000;">pData = new MyThreadData;</span>          pData->nShortData = i;          list.AddHead(pData);      }        //遍历链表,释放MyThreadData对象占用的空间      pData = (MyThreadData*)list.GetHead();      while(pData != NULL)      {          MyThreadData* pNextData = pData->pNext;          printf("The value is %d\n",pData->nShortData);          <span style="color:#ff0000;">delete pData;</span>          pData = pNextData;      }
    希望本文所述对大家的C++程序设计有所帮助
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部