问题
Possible Duplicate:
C++'s “placement new”
in the below code what does Line 3 represents, is it the way of typecasting? or what
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
...
}
回答1:
This is a typical usage of Placement new.
It allows you to allocate memory and then construct objects at that particular memory location.
Line #3 essentially just calls the constructor Fred::Fred()
. The this
pointer in the Fred
constructor will be equal to place
. The returned pointer f
will therefore be equal to place
.
来源:https://stackoverflow.com/questions/10033194/what-is-the-meaning-of-the-below-sentence-in-c