在我的类中调用new时重载new运算符,而不是我班级的新对象

时间:2016-05-13 23:33:43

标签: c++ overloading

我试图在类中重载new运算符但它不起作用。当我尝试在全局范围内重载它时,它确实有效但不在课堂上。

我的类中有这两个,但是当在类或类似的东西中调用new时,它不会运行。如果我把它从课堂(全球)中取出来,它确实有效。

编辑:看起来新的重载被设计为在使用new创建类类型的对象时运行。我希望在课堂上有新内容的时候让它运行。我该怎么做?

void* LeakCheck::operator new(size_t size)
{
    cout << "Allocating memory..." << endl;
    auto newObject = memoryManager.allocate(size); //calls malloc
    return newObject;
}

void LeakCheck::operator delete(void* objectPtr) noexcept
{
    cout << "Deallocating memory..." << endl;
    void** ptr = reinterpret_cast<void**>(objectPtr);
    memoryManager.deallocate(ptr, 0); //calls free
}

0 个答案:

没有答案