Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我可以使用超载的';新';具有原始';新';在一起_C++ - Fatal编程技术网

C++ 我可以使用超载的';新';具有原始';新';在一起

C++ 我可以使用超载的';新';具有原始';新';在一起,c++,C++,我已经编写了一个cpp,如下所示,以使新操作符过载 void* operator new(size_t size) { //return malloc(size); return MemoryMgr::Instance().allocMem(size); } void operator delete(void* p) { MemoryMgr::Instance().freeMem(p); } void* operator new[](size_t size

我已经编写了一个cpp,如下所示,以使新操作符过载

    void* operator new(size_t size)
{
    //return malloc(size);
    return MemoryMgr::Instance().allocMem(size); 
}


void operator delete(void* p)
{
    MemoryMgr::Instance().freeMem(p);
}

void* operator new[](size_t size)
{
    return MemoryMgr::Instance().allocMem(size);
}


void operator delete[](void* p)
{
    MemoryMgr::Instance().freeMem(p);
}


void* mem_alloc(size_t size)
{
    return MemoryMgr::Instance().allocMem(size);
}

void mem_free(void* p)
{
    free(p);
}

然而,在main函数中,有时我想使用新的。但是计算机总是调用重载的new。然后我尝试了
::new
。但是没有意义。
哪种方式可以同时使用重载的new和original new?将void*运算符new放入需要重载新函数的专用类中?

覆盖全局运算符
new
delete
是一个全功能游戏。您不能在同一个程序中同时使用覆盖和原始版本。

“有时我想使用原始版本的新版本”您的确切意思是什么?您可以很容易地为一个不完全正确的特定类重载new,正如我在其他注释中提到的,您可以在class@AlessandroTeruzzi当然可以,但它不是一个全局操作符
新的
。没错,我的错。明白了。谢谢,先生。