3

重複の可能性:
C++ の「placement new」

以下のコードでは、3行目は何を表しているのですか?それは型キャストの方法ですか? または何

 void someCode()
 {
   char memory[sizeof(Fred)];     // Line #1
   void* place = memory;          // Line #2

   Fred* f = new(place) Fred();   // Line #3
   // The pointers f and place will be equal

   ...
 }
4

1 に答える 1

3

これはPlacement newの典型的な使い方です。
これにより、メモリを割り当ててから、その特定のメモリ位置にオブジェクトを構築できます。

行 #3 は基本的にコンストラクターを呼び出すだけFred::Fred()です。コンストラクターのthisポインターはFredと等しくなりplaceます。したがって、返されるポインタfは と等しくなりplaceます。

于 2012-04-05T17:32:27.327 に答える