template <class _T1>
inline void constructInPlace(_T1 *_Ptr)
{
new (static_cast<void*>(_Ptr)) _T1();
}
我知道关于c ++的新地方,我无法理解上面的语法!
答案 0 :(得分:2)
此语法称为placement new。它允许您在已拥有的内存位置中构造对象。它不会为你分配内存。
在这种情况下,正在_Ptr指向的内存位置构造T1
对象,因为new
期望void*
,它正在被抛弃。无论如何,演员都会隐式发生,看起来像明确演员是为了使意图明确。