在 C++ 中,new 运算符之后和类型之前的括号 (placement_params) 是什么意思?

What does it mean for (placement_params) the parentheses after new operator and before type in c++?

第一个括号的作用是什么?

// TArray<struct FBatchedLine> BatchedLines;      // declared in LineBatchComponent.h

new(BatchedLines) FBatchedLine(Start, End, Color, LifeTime, Thickness, DepthPriority);

new operator 参考资料说它是 placement_params:

If placement_params are provided, they are passed to the allocation function as additional arguments

我想它会直接在给定数组的末尾创建对象 BatchedLines,但我不确定它是如何工作的。

placement_params什么时候有用?

备注

对于有权访问 github UnrealEngine 存储库的用户,here 是源文件。

这是 placement new 语法。它使用构造函数参数 (Start, End, Color, LifeTime, Thickness, DepthPriority)BatchedLines 指向的内存中构造类型 FBatchedLine 的对象。调用后,可以使用BatchedLines引用构造的对象

非正式地,您可以想象调用构造函数 BatchedLinesthis

文本:palcement_params 未在 reference C++ page 中解释。按照英文的意思:指针放在哪里,通常是数组中的一个位置。这是来自 boost

的代码示例
T* buffer;
size_t write_index;
new (buffer + write_index) T(t); // copy-construct

本质上,您将一个类型为 T 的新对象放入缓冲区的 write_index 位置。