有两种方式:
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;
}