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

我知道c++的新地方,我看不懂上面的语法!

4

1 回答 1

2

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

在这种情况下,T1在 _Ptr 指向的内存位置中构造了一个对象,因为newexpects void*,它被丢弃了。无论如何,强制转换都会隐式发生,看起来显式强制转换是为了明确意图。

于 2013-01-10T01:30:01.070 回答