#include <malloc.h>
#include <memory.h>
class Blanks
{
public:
void *operator new(size_t stAllocateBlock,char chInit);
};
void *Blanks::operator new(size_t stAllocateBlock,char chInit)
{
void *pvTemp= malloc(stAllocateBlock);
if(pvTemp!=0)
memset(pvTemp,chInit,stAllocateBlock);
return pvTemp;
}
int main()
{
Blanks *a5 = new(0xa5) Blanks;
return a5!=0;
}
重载new操作符第一个参数必须是size_t类型,并且传入的值就是类的大小。因为类的大小为1。如果类中含有一个int类型成员(int占4个字节),那么参数stAllocateBlock的值为4;
new中的0xa5表示第二个参数的大小,也就是chInit为0xa5;
程序首先调用Blanks重载的new操作符函数,然后使用默认的构造函数初始化对象,最后用这个Blanks对象地址初始化a5;