mikanOSのコラムより抜粋.
C++のポインタと参照どっちを使うべきか??
両者とも本質的には、メモリアドレスを用いた表現ってことで同じ.
違いはnullポインタの作りやすさの違い.
ポインタの場合は、単にnullptrと書くだけでヌルポインタを表現できてしまう.
参照の場合は、ヌルポインタを作れない.
int& null_ref = *null_ptr
は未定義の動作.
これによってnullを渡されたくないという意思表示になる.
まとめ
ポインタの場合、ヌルポインタを含めて正常値とするか異常値とするかはどちらもあり得る.
参照の場合は、ヌル参照は常に異常値.
Discussion