C++之CNoTrackObject类和new delete操作符的重载实例
C++之CNoTrackObject类和new delete操作符的重载实例
发布时间:2016-12-28 来源:查字典编辑
摘要:本文实例讲述了C++中CNoTrackObject类和newdelete操作符的重载,分享给大家供大家参考。具体如下:头信息:复制代码代码如...

本文实例讲述了C++中CNoTrackObject类和new delete操作符的重载,分享给大家供大家参考。具体如下:

头信息:

复制代码 代码如下:class CNoTrackObject{

public: //在此出过错,没有加public 默认为类的私有变量,MyThreadData继承这个类后也无法访问成员变量

void* operator new(size_t nSize);

void operator delete(void*);

virtual ~CNoTrackObject(){}

};

实现方法如下:

复制代码 代码如下: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);

}

}

使用过程如下:

复制代码 代码如下:struct MyThreadData:public CNoTrackObject

{

MyThreadData* pNext;

int nShortData;

};

for (int i=0;i<10;i++)

{

<span>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 %dn",pData->nShortData);

<span>delete pData;</span>

pData = pNextData;

}

希望本文所述对大家的C++程序设计有所帮助

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C语言学习
热门C语言学习
编程开发子分类