C++ 我可以使用超载的';新';具有原始';新';在一起
我已经编写了一个cpp,如下所示,以使新操作符过载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
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当然可以,但它不是一个全局操作符新的。没错,我的错。明白了。谢谢,先生。