普通に変数の値を関数に渡す
関数が実際に渡された変数の値を変えないことが前提
そして渡す変数が比較的軽くてシンプルなもの(int, char, double, boolなど)
ポインターを使って変数の値を関数に渡す
関数が実際に渡された変数の値を変えることが前提
渡される変数は重い、というかシンプルにコピーできない場合(何byteになるのかわからないようなstring型だったりvectorだったり)
加えて、ポインターがnullの値を保持していいこと。
constポインターを使って変数の値を関数に渡す
関数が実際に渡された変数の値を変えないことが前提
渡される変数は重い、というかシンプルにコピーできない場合
加えて、ポインターがnullの値を保持していいこと。
あとはポインター自体を変えたくないとき。
リファレンスを使って変数の値を関数に渡す
関数が実際に渡された変数の値を変えることが前提
渡される変数は重い、というかシンプルにコピーできない場合
nullの値を保持できない場合
constリファレンスを使って変数の値を関数に渡す
関数が実際に渡された変数の値を変えないことが前提
渡される変数は重い、というかシンプルにコピーできない場合
nullの値を保持できない場合
ちょっとまだnullの値を保持していい、してはいけない局面が理解できていませんが、
後々理解して追記します。
とりあえずメモ。