这个问题已经在这里有了答案:




已关闭8年。






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

   ...
 }

最佳答案

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

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

关于c++ - 下面的句子在c++中是什么意思,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10033194/

10-11 21:51