C++リファレンス完全理解:重要概念とポインタとの違い
参照変数とは、すでに存在する変数の別名、つまりエイリアスです。一度参照が変数で初期化されると、変数名または参照名のどちらを使ってもその変数を参照できます。
参照 vs ポインタ
参照はしばしばポインタと混同されますが、参照とポインタには3つの主要な違いがあります:
NULL参照を持つことはできません。参照が正当なストレージに接続されていると常に想定できる必要があります。
一度オブジェクトに初期化された参照を、別のオブジェクトを参照するように変更することはできません。ポインタはいつでも別のオブジェクトを指せます。
参照は作成時に初期化されなければなりません。ポインタはいつでも初期化できます。
C++での参照の作成
変数名を、メモリ内の変数の位置に貼られたラベルだと考えます。すると、参照はそのメモリ位置に貼られた2つ目のラベルと考えられます。したがって、元の変数名または参照のどちらを通しても変数の内容にアクセスできます。例えば、以下の例があるとします:
int i = 17;
i の参照変数を以下のように宣言できます:
int& r = i;
これらの宣言での & を 参照 と読みます。したがって、最初の宣言を「rはiで初期化された整数参照」、2番目の宣言を「sはdで初期化されたdouble参照」と読みます。intとdoubleでの参照の使用例:
Live Demo#include <iostream>
using namespace std;
int main () {
// 単純な変数宣言
int i;
double d;
// 参照変数宣言
int& r = i;
double& s = d;
i = 5;
cout << "Value of i : " << i << endl;
cout << "Value of i reference : " << r << endl;
d = 11.7;
cout << "Value of d : " << d << endl;
cout << "Value of d reference : " << s << endl;
return 0;
}
上記コードをコンパイルして実行すると、以下の結果が得られます:
Value of i : 5 Value of i reference : 5 Value of d : 11.7 Value of d reference : 11.7
参照は通常、関数の引数リストと戻り値で使用されます。したがって、C++プログラマーにとって明確にしておくべき、C++参照に関連する2つの重要なトピックがあります:
| No. | 概念と説明 |
|---|---|
| 1 | 参照をパラメータとして渡す C++は参照を関数パラメータとして渡すことを、通常のパラメータよりも安全にサポートしています。 |
| 2 | 参照を戻り値として返す C++関数から他のデータ型と同様に参照を返すことができます。 |
C言語
- C++データ型完全ガイド:基本型、修飾子、ベストプラクティス
- C++演算子完全ガイド:算術・代入・関係・論理・ビット演算子と実例
- C++コメント完全ガイド:読みやすく保守しやすいコードのためのベストプラクティス
- C++コンストラクタ完全ガイド:デフォルト、パラメータ付き、コピーの違いと実例
- C++クラステンプレート完全ガイド:実践的なジェネリックプログラミング
- C++プログラミング言語:概要と主要機能
- C++定数とリテラル完全解説:型、構文、ベストプラクティス
- C++演算子完全ガイド:種類、使い方、ベストプラクティス
- C++数値型完全ガイド:実践的な使い方と数学関数
- C++リファレンス完全理解:重要概念とポインタとの違い
- C++テンプレート完全ガイド:ジェネリックプログラミングの基礎