每个类重载new()而不是全局

时间:2013-08-04 22:35:25

标签: c++ memory memory-management

我理解为重载全局新运算符,您可以执行此操作,所有类都将使用它:

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的新的()的不同实现?

1 个答案:

答案 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();
       }
    }
  };

我们已经完成了。