我刚刚了解了名为“placement new”的 C++ 构造。它允许您精确控制指针在内存中指向的位置。它看起来像这样:
#include <new> // Must #include this to use "placement new"
#include "Fred.h" // Declaration of class Fred
void someCode()
{
char memory[sizeof(Fred)];
void* place = memory;
Fred* f = new(place) Fred(); // Create a pointer to a Fred(),
// stored at "place"
// The pointers f and place will be equal
...
}
(来自C++ FAQ Lite的示例)
在此示例中,this
Fred 的指针将等于place
。
我已经看到它在我们团队的代码中使用过一两次。根据您的经验,这种结构能带来什么?其他指针语言有类似的结构吗?对我来说,这似乎让人想起equivalence
FORTRAN,它允许不同的变量占据内存中的相同位置。