在类中使用new operator new

时间:2011-09-20 07:34:51

标签: c++

假设我有一个A类,我在课堂上重载了new。

class A{
    public:
    A();
    void *operator new(size_t size);
    void operator delete(void *p);
}

我如何在A类中使用这个重载的operator new而不是全局new? 例如

A::A(){
    ...
    int *temp = new int[10];  //Use overloaded new and not global new
}

我环顾四周,我认为我没有看到一个解决这个问题的问题。

谢谢!

1 个答案:

答案 0 :(得分:5)

该重载版本将用于创建class A及其后代的对象 - 例如,当您的代码中有new A()时。除非您重载new A[],否则不会调用operator new[]()

为了在执行operator new[]()时使用new int[]功能,您必须替换全局operator new()[]功能。