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

私はC++について新しい場所を知っていましたが、上記の構文を理解できません!

4

1 に答える 1

2

この構文は、配置構文として知られています。すでに所有しているメモリ位置にオブジェクトを作成できます。それはあなたのためにメモリを割り当てません。

この場合、T1オブジェクトは_Ptrが指すメモリ位置に構築されています。がnew期待されるため、オブジェクトはvoid*キャストダウンされています。キャストはとにかく暗黙的に発生します。明示的なキャストは意図を明確にすることであるように見えます。

于 2013-01-10T01:30:01.070 に答える