関数の中で生成した値を、戻り値ではなく引数を書き換えることで呼び出し元へ返す方法。

通常は非 const 参照やポインタで実装される。

デメリット

  • 呼び出し側で、読み取り専用なのか書き換えられるのかが分かりにくい。
  • 戻り値のように式の中でそのまま使いにくい。
  • ポインタではヌルチェックが必要になり、参照では一時オブジェクトを渡せない。

使う場面

  • 既存のオブジェクトを直接更新するのが自然なとき。
  • 入出力引数が必要なとき。

一般には、値を返したいだけなら戻り値を使うほうが分かりやすいことが多い。

関連

参考