类构造,但现在分配内存

时间:2013-01-10 01:27:07

标签: c++

template <class _T1>
inline void constructInPlace(_T1 *_Ptr)
{
    new (static_cast<void*>(_Ptr)) _T1();
}

我知道关于c ++的新地方,我无法理解上面的语法!

1 个答案:

答案 0 :(得分:2)

此语法称为placement new。它允许您在已拥有的内存位置中构造对象。它不会为你分配内存。

在这种情况下,正在_Ptr指向的内存位置构造T1对象,因为new期望void*,它正在被抛弃。无论如何,演员都会隐式发生,看起来像明确演员是为了使意图明确。