可能重复:
C++'s “placement new”
在下面的代码中,第3行代表什么,是类型转换的方式吗?或什么
void someCode()
{
char memory[sizeof(Fred)]; // Line #1
void* place = memory; // Line #2
Fred* f = new(place) Fred(); // Line #3
// The pointers f and place will be equal
...
}
答案 0 :(得分:3)
这是 Placement new 的典型用法 它允许您分配内存,然后在该特定内存位置构造对象。
第3行基本上只调用构造函数Fred::Fred()
。 this
构造函数中的Fred
指针将等于place
。因此,返回的指针f
将等于place
。