时间:2021-05-20
本文实例讲述了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 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++程序设计有所帮助
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
new、delete(new[]、delete[])操作符的重载需要注意:1.重载的new、delete(或者new[]、delete[])操作符必须是类的静态
malloc/free和new/delete的区别malloc/free是C/C++标准库的函数;new/delete是C++操作符。malloc/free只是
介绍1.malloc,free和new,delete区别。a.malloc,free是C/C++的标准库函数。new,delete是c++的操作符。b.mall
前言这篇文章将对C++中复制构造函数和重载赋值操作符进行总结,包括以下内容:1.复制构造函数和重载赋值操作符的定义;2.复制构造函数和重载赋值操作符的调用时机;
C++基础编程之十进制转换为任意进制及操作符重载最近学习C++的基础知识,完成十进制转换为任意进制及操作符重载,在网上找的不错的资料,这里记录下,实例代码:#i