本文主要是介绍实现new和delete的重载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
有两种方式:
1.覆盖默认定义的全局方式
2.只针对一个类的局部方式
new的一般语法形式:
void* operator new(size_t size)
{
//使用new运算符分配size大小的内存空间
}
delete的一般语法形式
void operator delete(void *point)
{
//使用delete释放point所指向的内存空间
}
new和delete可以被全局重载:
#include<iostream>
using namespace std;
class loc
{
public:loc(int i,int j);void print();void* operator new(size_t size);void operator delete(void *point);
private:int weight,hight;
};
loc::loc(int i,int j)
{weight=i;hight=j;
}
void loc::print()
{cout<<weight*hight<<endl;
}
void* loc::operator new(size_t size)
{cout<<"分配内存"<<endl;return malloc(size);
}
void loc::operator delete(void* point)
{cout<<"释放内存"<<endl;free(point);
}
int main()
{loc* p=new loc(20,30);p->print();delete(p);return 0;
}
这篇关于实现new和delete的重载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!