gpt4 book ai didi

c++ - 在 C++ 中重载 operator new 和 operator new[] 有什么区别?

转载 作者:行者123 更新时间:2023-11-30 00:48:03 25 4
gpt4 key购买 nike

operator newoperator new[] 具有相同的函数原型(prototype):void * (size_t size)。重载时需要注意什么?

如果我只重载 operator new 可以吗?

重载operator deleteoperator delete[]有什么区别?

最佳答案

operator new 用于创建单个对象,例如:

my_class* p = new my_class;

operator new[] 用于创建对象的数组,如:

my_class* p = new my_class[10];

Is that OK if I only overload operator new?

这取决于您是否需要对数组版本进行特殊处理(operator new[])。默认情况下,operator new[] 将调用 operator new

基本上,如果你需要重载operator new,最好也重载operator new[],因为如果你想实现自己的内存管理,这是一个让它们保持一致的好主意。并且不要忘记 nothrow 和 placement 版本(仅作为成员函数,全局版本不能被替换)。

operator deleteoperator delete[] 也是如此。

关于c++ - 在 C++ 中重载 operator new 和 operator new[] 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32983177/

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