' P '

whatever I will forget

C++ いつポインターを使うのか、リファレンスを使うのかの簡単まとめ

普通に変数の値を関数に渡す

関数が実際に渡された変数の値を変えないことが前提
そして渡す変数が比較的軽くてシンプルなもの(int, char, double, boolなど)

ポインターを使って変数の値を関数に渡す

関数が実際に渡された変数の値を変えることが前提
渡される変数は重い、というかシンプルにコピーできない場合(何byteになるのかわからないようなstring型だったりvectorだったり)
加えて、ポインターがnullの値を保持していいこと。

constポインターを使って変数の値を関数に渡す

関数が実際に渡された変数の値を変えないことが前提
渡される変数は重い、というかシンプルにコピーできない場合
加えて、ポインターがnullの値を保持していいこと。
あとはポインター自体を変えたくないとき。

リファレンスを使って変数の値を関数に渡す

関数が実際に渡された変数の値を変えることが前提
渡される変数は重い、というかシンプルにコピーできない場合
nullの値を保持できない場合

constリファレンスを使って変数の値を関数に渡す

関数が実際に渡された変数の値を変えないことが前提
渡される変数は重い、というかシンプルにコピーできない場合
nullの値を保持できない場合

ちょっとまだnullの値を保持していい、してはいけない局面が理解できていませんが、
後々理解して追記します。 とりあえずメモ。