C++ 中如何重载new ,delete ???

来源:百度知道 编辑:UC知道 时间:2024/05/22 15:37:29
课本上的例题我看不懂,求一个简单易懂的例子来说明他们的重载和使用方法。最好标上注释啊!!
忘了,还有一个〔〕的重载。谢谢~~~~

#include <iostream>
using namespace std;
class myClass
{
typedef unsigned int size_t;
//定义unsigned int 为 size_t,用于方便表示分配内存的大小。
public:
myClass(){};

void *operator new(size_t size)
{
return malloc(size);
/*这里你只要返回的是void*类型的参数就可以。
至于在函数里做什么,用不用size参数,根据需要而定。
*/
};
void operator delete(void *p)
{
free(p);
};
void operator ()(int a)
{/*
这里的函数参数由自己设定。
返回值也是自己设定。
*/
cout<< a<<endl;
};
//另外一个operator ()
int operator ()()
{
return 100;
}
/*
.......................
.......................
*/
};
int main(int argc, char* argv[])
{
myClass c;
myClass::operator new(100);
myClass::operator delete(0);
/*注意new和delete,一般不建议重载,一般只是
用于防止基类初始化等情况。
*/

c(1000);/*看到没,这里用operator(int)函数了。
*/
cout&l