什么是下面句子中的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
...
}
答
这是Placement new典型用法。
它允许您分配内存,然后在该特定内存位置构造对象。
线#3本质上只是调用构造函数Fred::Fred()
。 Fred
构造函数中的this
指针将等于place
。返回的指针f
因此将等于place
。
Google展示位置新增。 – RedX 2012-04-05 17:32:40
由于对齐要求,这不起作用。 'Fred'类型可能需要比'char'更严格的对齐方式。您应该使用'aligned_storage',而不是在C++ 11和TR1中提供。 – 2012-04-05 18:30:55