C++ 允许重载 operator new - 全局和每个类 - 通常 operator new、operator new[] 与 一起使用new[] 语句和放置 operator new 分开.
C++ allows overloading operator new - both global and per-class - usual operator new, operator new[] used with new[] statement and placement operator new separately.
这三个中的前两个通常会因使用自定义分配器和添加跟踪而过载.但是放置 operator new 看起来很简单——它实际上什么都不做.例如,在 Visual C++ 中,默认实现只返回传递给调用的地址:
The former two of those three are usually overloaded for using customized allocators and adding tracing. But placement operator new seems pretty straightforward - it actually does nothing inside. For example, in Visual C++ the default implementation just returns the address passed into the call:
//from new.h
inline void* operator new( size_t, void* where )
{
return where;
}
它还能做什么?为什么以及如何合理地重载放置 operator new?
What else could it do? Why and how could I sensibly overload placement operator new?
正确答案是你不能替换新的运算符位置.
§18.4. 1.3 安置表格
这些函数是保留的,C++ 程序不能定义替换标准 C++ 库中版本的函数.
§18.4.1.3 Placement forms
These functions are reserved, a C++ program may not define functions that displace the versions in the Standard C++ library.
基本原理:分配和释放操作符的唯一目的是分配和释放内存,所以当给定内存时,什么都不用做.(标准特别指出这些功能故意不执行其他操作.")
The rationale: The only purpose of the allocation and deallocation operators is to allocate and deallocate memory, so when given memory nothing more should be done. (The standard specifically notes that these functions "Intentionally perform no other action.")
这篇关于我怎么能合理地重载放置运算符 new?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
读取输入文件,最快的方法?read input files, fastest way possible?(读取输入文件,最快的方法?)
在 C++ 中读取格式化输入的最简单方法?The easiest way to read formatted input in C++?(在 C++ 中读取格式化输入的最简单方法?)
从 .txt 文件读取到 C++ 中的二维数组Reading from .txt file into two dimensional array in c++(从 .txt 文件读取到 C++ 中的二维数组)
如何在 C++ 中模拟按键按下How to simulate a key press in C++(如何在 C++ 中模拟按键按下)
为什么在 cin.ignore() 之后没有 getline(cin, var) 读取Why doesn#39;t getline(cin, var) after cin.ignore() read the first character of the string?(为什么在 cin.ignore() 之后没有 getline(cin, var) 读取
scanf 格式输入的 cin 类比是什么?What is the cin analougus of scanf formatted input?(scanf 格式输入的 cin 类比是什么?)