- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:new型の戻り値? new型のパラメータ?)
new型の戻り値? new型のパラメータ?
このQ&Aのポイント
- C++ではnew型を使って様々な方法でオブジェクトを生成することができます。new型のポインタを戻り値として返す方法と、new型のポインタをパラメータとして使う方法があります。
- 関数内でnew型ポインタを宣言し、そのポインタのアドレスを外部のポインタに渡す方法があります。
- 関数を呼ぶ前に既にnew型ポインタを宣言しておく方法もあります。どちらがメジャーな方法かはわかりませんが、new型ポインタを忘れずにdeleteすることが重要です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
[1]と[2]のどちらか一方を選ぶなら、迷わず[2]です。 [1]は、関数が返したポインタの素性が分かりにくいので、間違いのもとになります。 普通はこのような場合、生のポインタを使うのではなく、 std::wstring XXX(){ std::wstring ret; //文字列に対するいろいろな制御 return ret; } とするか、関数内部で副作用を伴うのであれば、 std::auto_ptr<std::wstring> XXX(){ std::auto_ptr<std::wstring> ret(new std::wstring); //文字列に対するいろいろな制御 return ret; } または、 void XXX(std::wstring* ret){ std::wstring temp; //文字列に対するいろいろな制御 ret->swap(temp); } とします。
お礼
とても詳細にしかも幾つか例を示して下さりありがとうございます。 自分は、C++を始めて一週間なのでstd::??といったC++の構文を 理解していないため例を理解できなかったのですが、C++に更に こんなにもたくさんの応用があったとは驚きました。 いろいろとC++の構文を調べてスマートな方法を選別し使用したいと思います。ありがとうございました。