詳細を調べて、古い投稿を渡す方法を決定するための答えを見つけてください(重複して申し訳ありません)
- 関数が副作用として引数を変更する場合は、非 const 参照で取得します。
- 関数がその引数を変更せず、引数がプリミティブ型である場合は、値で受け取ります。
- それ以外の場合は、次の場合を除いて const 参照で取得します
- とにかく関数が const 参照のコピーを作成する必要がある場合は、それを値で取得します。
【原文は以下です】
値、const 値、参照、const 参照、ポインター、const ポインターによる受け渡しの使用を要約したいと思います。修正して提案をお願いします。
- 参照とポインタは、できればconstを使ってください(皆様ありがとうございます)。
- 参照渡しとポインタ渡しの間にパフォーマンスの違いはありません。
- サイズがポインターよりも大きくない場合 (Mark Ransom のおかげです)、値で渡します。
そしていくつかの質問:
- const 値を渡すことはめったにありません。それは有用ですか、それともコンパイラは値渡しで const-ness を検出しますか?
- const 参照がスペースを取りすぎています。値渡しのみを使用できますか? 最新のコンパイラは、パフォーマンスを犠牲にしないように最適化しますか?
juanchopanza が言及した「速度が必要ですか? 値渡し」という記事によると、もう 1 つ項目を追加します。
- 引数をコピーする場合は、それらを値で渡し、const 参照で渡し、関数本体で自分でコピーを行う以外に、コンパイラにコピーを行わせます。
どうもありがとう!