C – 重载运算符new并提供其他参数

前端之家收集整理的这篇文章主要介绍了C – 重载运算符new并提供其他参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道你可以给运算符带来新的重载.执行此操作时,默认情况下会为方法发送一个size_t参数.但是,是否可以将size_t参数以及其他用户提供的参数发送到重载的新运算符方法

例如

int a = 5;
Monkey* monk = new Monkey(a);

因为我想覆盖这样的新运算符

void* Monkey::operator new(size_t size,int a)
{

...

}

谢谢

编辑:这是我想要完成的事情:

我在应用程序的开头(内存池)分配了一大块虚拟内存.继承我的基类的所有对象都将继承其重载的new运算符.
我想有时在重载new中传递参数的原因是告诉我的内存管理器我是否要使用内存池,或者我是否想用malloc分配它.

解决方法

使用该附加操作数调用new,例如
Monkey *amonkey = new (1275) Monkey(a);

附加物

将参数[s]传递给新运算符的实际示例由@L_404_0@给出,它允许您进行编码

Monkey *acollectedmonkey = new(UseGc) Monkey(a);

然后你不必费心去删除acollectedmonkey(假设它的析构函数不做奇怪的事情;见this answer).在极少数情况下,您希望将显式的Allocator参数传递给模板集合,如std :: vector或std :: map.

使用内存池时,通常需要一些MemoryPool类,并将该类的实例(或指向它们的实例)传递给新的和删除操作.出于可读性的原因,我不建议通过一些模糊的整数来引用内存池.

猜你在找的C&C++相关文章