This is more commonly known as 'placement new' and is discussed pretty well by the C++ FAQ (in the 'Destructors' area):
- http://www.parashift.com/c++-faq-lite/dtors.html#faq-11.10
It allows you to construct objects in raw memory, which can be useful in certain specialized situations, such as when you might want to allocate an array for a large number of possible objects, but want to construct then as needed because you often might not need anywhere near the maximum, or because you want or need to use a custom memory allocator.