new和delete重载
通过重载new和delete,我们可以自己实现内存的管理策略。new和delete只能重载为类的静态运算符。而且重载时,无论是否显示指定static关键字,编译器都认为是静态的运算符重载函数。
重载new时,必须返回一个void *类型的指针,它可以带多个参数,但第1个参数必须是size_t类型,该参数的值由系统确定。
static void * operator new(size_t nSize)
{
cout << "new操作符被调用, size = " << nSize << endl;
void * pRet = new char[nSize];
return pRet;
}
重载delete时必须返回void类型,它可以带有多个参数,第2个参数必须是要释放的内存的地址void *,如果有第2个参数,它必须为size_t类型。
static void operator delete(void * pVoid)
{
cout << "delete操作符被调用." << endl;
delete [] pVoid;
}
一个类可以重载多个new运算符,但是只能重载一个delete类运算符。
软件培训视频下载地址www.rjpx.net/
海量程序开发视频供你下载,打造程序员的一个网络家园
浙公网安备 33010602011771号