gpt4 book ai didi

c++ - 我可以对重载了 operator new 的类使用 global operator new 吗?

转载 作者:搜寻专家 更新时间:2023-10-31 00:04:42 24 4
gpt4 key购买 nike

假设我有一个重载了 operator new 的类。

class Class {
public:
void* operator new( size_t );
void operator delete( void* );
};

当我使用 new Class() 时,该类的对象是否总是分配有重载的 operator new 还是默认的 operator newnew Class() 构造出现在代码中时使用?

最佳答案

使用范围解析运算符(::)来调用全局定义的operator new,否则它将始终使用重载的operator new,当然在以下情况下除外placement new operator 无论如何都不打算重载。

class Test {
public:
void* operator new( size_t );
void operator delete( void* );
};

int main()
{
Test* pTest1 = ::new Test();
Test* pTest2 = new Test();

/*
do some stuff
*/

::delete pTest1;
delete pTest2;
return 0;
}

注意删除操作符对应定义的使用。

关于c++ - 我可以对重载了 operator new 的类使用 global operator new 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3675586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com