• ベストアンサー

newの後の()

とあるC++のコードを眺めていたら、  new (&RefToAnObj) Clazz(); という構文がありました。RefToAnObjは引数として渡された非const参照です。Clazzクラスにはnew演算子のオーバーロード定義はありませんでした。  どう解釈したらいいんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

デフォルトで void *operator new(std::size_t) void *operator new(std::size_t, void *) が用意されています. 前者が普通の new, 後者が placement new. 配列の new も同じ.

bobviv
質問者

お礼

どうも失礼しました。よく探してみたら『プログラミング言語C++』に書いてありました。その章だけなぜか読み飛ばしてしまっていました。  回答下さった方々、どうも有難うございました。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

placement new (配置new)というやつですね。 C++ Labyrinth http://www.fides.dti.ne.jp/~oka-t/cpplab-placement-new.html コンストラクタにメモリ確保を任せるのではなく、 呼び出し側で確保しておいた領域にオブジェクトを 作らせるものです。

bobviv
質問者

補足

回答ありがとうございます。ご紹介の手段については『プログラミング言語C++』に書いてあったので知っていますが、この場合、new演算子のオーバーロードが無いので別物かと思ったんですが、演算子オーバーロードなしで使える配置newというものが存在する、という意味でしょうか?

関連するQ&A

専門家に質問してみよう