3

可能的重复:
C++ 的“新位置”

在下面的代码中,第 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

   ...
 }
4

1 回答 1

3

这是Placement new的典型用法。
它允许您分配内存,然后在该特定内存位置构造对象。

第 3 行本质上只是调用构造函数Fred::Fred()。构造函数中的this指针Fred将等于place. 因此,返回的指针f将等于place

于 2012-04-05T17:32:27.327 回答