什么是下面句子中的C++

问题描述:

可能重复的含义:
C++'s “placement new”什么是下面句子中的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 

    ... 
} 
+3

Google展示位置新增。 – RedX 2012-04-05 17:32:40

+0

由于对齐要求,这不起作用。 'Fred'类型可能需要比'char'更严格的对齐方式。您应该使用'aligned_storage',而不是在C++ 11和TR1中提供。 – 2012-04-05 18:30:55

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

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

+0

嗨,Als,感谢您的回复......这个指针指向Fred的指针将如何等于void *?, – Naruto 2012-04-05 18:08:24

+0

@LLL:这就是您的placement new的实现,它为您指定了place的地址'到'f'。这是由新的展示位置提供的功能。 – 2012-04-05 18:10:42

+0

Thnx澄清..这个笏我想.. – Naruto 2012-04-05 18:11:39