【发布时间】:2011-04-10 03:46:49
【问题描述】:
C++ 允许重载 operator new - 全局和每个类 - 通常 operator new、operator new[] 与 new[] 语句和放置 operator new 一起使用。
这三个中的前两个通常因使用自定义分配器和添加跟踪而被重载。但是放置operator new 似乎很简单——它实际上在内部什么都不做。例如,在 Visual C++ 中,默认实现只返回传递给调用的地址:
//from new.h
inline void* operator new( size_t, void* where )
{
return where;
}
它还能做什么?为什么以及如何合理地超载展示位置operator new?
【问题讨论】:
-
您是否要求使用重载 new 运算符?这是一个相当广泛的问题。
-
@Alexander Rafferty 我专门询问重载放置新的用途。在这种特定情况下,我看不出任何目的。
-
+1 用于进入头文件。
-
+1,有趣的问题,这就是我喜欢这样的原因:)
-
学究式:你不重载 operator new,你替换它(或覆盖它)。重载意味着创建一个新的方法/函数,使用与现有方法相同的名称但具有不同的签名。替换函数时,使用相同的签名。
标签: c++ visual-c++ memory-management operator-overloading