0

我知道要重载全局 new 运算符,您可以这样做,并且所有类都将使用它:

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

4

1 回答 1

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

我们完成了。

于 2013-08-04T22:38:27.630 回答