template <class _T1>
inline void constructInPlace(_T1 *_Ptr)
{
new (static_cast<void*>(_Ptr)) _T1();
}
私はC++について新しい場所を知っていましたが、上記の構文を理解できません!
template <class _T1>
inline void constructInPlace(_T1 *_Ptr)
{
new (static_cast<void*>(_Ptr)) _T1();
}
私はC++について新しい場所を知っていましたが、上記の構文を理解できません!
この構文は、配置構文として知られています。すでに所有しているメモリ位置にオブジェクトを作成できます。それはあなたのためにメモリを割り当てません。
この場合、T1
オブジェクトは_Ptrが指すメモリ位置に構築されています。がnew
期待されるため、オブジェクトはvoid*
キャストダウンされています。キャストはとにかく暗黙的に発生します。明示的なキャストは意図を明確にすることであるように見えます。