- ベストアンサー
newの後の()
とあるC++のコードを眺めていたら、 new (&RefToAnObj) Clazz(); という構文がありました。RefToAnObjは引数として渡された非const参照です。Clazzクラスにはnew演算子のオーバーロード定義はありませんでした。 どう解釈したらいいんでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
デフォルトで void *operator new(std::size_t) void *operator new(std::size_t, void *) が用意されています. 前者が普通の new, 後者が placement new. 配列の new も同じ.
その他の回答 (1)
- sakusaker7
- ベストアンサー率62% (800/1280)
回答No.1
placement new (配置new)というやつですね。 C++ Labyrinth http://www.fides.dti.ne.jp/~oka-t/cpplab-placement-new.html コンストラクタにメモリ確保を任せるのではなく、 呼び出し側で確保しておいた領域にオブジェクトを 作らせるものです。
質問者
補足
回答ありがとうございます。ご紹介の手段については『プログラミング言語C++』に書いてあったので知っていますが、この場合、new演算子のオーバーロードが無いので別物かと思ったんですが、演算子オーバーロードなしで使える配置newというものが存在する、という意味でしょうか?
お礼
どうも失礼しました。よく探してみたら『プログラミング言語C++』に書いてありました。その章だけなぜか読み飛ばしてしまっていました。 回答下さった方々、どうも有難うございました。