このページでは、プログラミングにおける「リファレンス」を取り上げます。ドキュメントの意味での「リファレンス」は、「リファレンスマニュアル」のページで取り上げています。
プログラミングにおいて、メモリ上にある値やオブジェクトを指し示すオブジェクトのことです。
リファレンスを用いて、指し示す先にある値をアクセスすることをデリファレンス(参照外し、間接参照とも)と呼びます。
リファレンス自体は、指し示す先が分かるだけの情報しか必要ないため、指し示す先にあるものの大きさを問わず、一定の小さなメモリで実現できます。この性質を利用して、効率的なプログラムを作成できます。たとえば、関数の引数として、オブジェクトのコピーを渡す代わりに、それを指し示すリファレンスを渡すことで(参照渡し)、引数を引き渡す処理時間を抑えられます。また、さまざまな箇所で必要になるオブジェクトがあるとき、オブジェクトのコピーを作るのではなく、おのおのがリファレンスだけを持つことで、大量のコピーをメモリに置く必要がなくなり、メモリ使用量を抑えられます。
C言語のポインタは、一種のリファレンスであるといえます。ただし、コンパイラによる型のチェックが甘かったり、扱いを間違えやすい点が多かったり(ヌルポインタの存在。ダングリングポインタやワイルドポインタなど)するため、バグを作りこみやすいという問題を抱えています。
C++ は、C言語のポインタの機能を制限し、問題をいくらか解消した、「参照(リファレンス)」という名称の機能を持っています。C++ の参照は、ほかのオブジェクトの別名(エイリアス)として機能するものです。そのため、何も指し示していないという状態(ポインタにおけるヌルポインタ)がありません。
C++ のリファレンス(参照)については、新C++編「std::vector」などで解説しています。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
Twitter でツイート/フォロー | LINE で送る | noteで書く |
![]() |
管理者情報 | プライバシーポリシー |