在 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
引用构造的对象
非正式地,您可以想象调用构造函数 BatchedLines
为 this
。
文本:palcement_params 未在 reference C++ page 中解释。按照英文的意思:指针放在哪里,通常是数组中的一个位置。这是来自 boost
的代码示例
T* buffer;
size_t write_index;
new (buffer + write_index) T(t); // copy-construct
本质上,您将一个类型为 T 的新对象放入缓冲区的 write_index 位置。
第一个括号的作用是什么?
// 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
引用构造的对象
非正式地,您可以想象调用构造函数 BatchedLines
为 this
。
文本:palcement_params 未在 reference C++ page 中解释。按照英文的意思:指针放在哪里,通常是数组中的一个位置。这是来自 boost
的代码示例T* buffer;
size_t write_index;
new (buffer + write_index) T(t); // copy-construct
本质上,您将一个类型为 T 的新对象放入缓冲区的 write_index 位置。