我理解为重载全局新运算符,您可以执行此操作,所有类都将使用它:
void *operator new(size_t size){
if(void *mem = malloc(size)){
cout << "allocated memory" << endl;
return mem;
}
else{
throw bad_alloc();
}
}
但是如何在每个类上重载new()?那么对于类X,Y和Z的新的()的不同实现?
答案 0 :(得分:3)
是的,只需声明static
:
class X
{
static void *operator new(size_t size) {
if(void *mem = malloc(size)){
cout << "allocated memory" << endl;
return mem;
}
else{
throw bad_alloc();
}
}
};
我们已经完成了。