導入
第6章ではポインタ(住所)を学びました。C++ には、それをもっと簡単に書ける「参照(reference)」があります。参照は「ある変数の別名」で、実務のコードに大量に出てきます。
説明
型& 名前 = 変数; と書くと、その変数の別名を作れます。別名を書き換えると、元の変数も変わります。ポインタと違って * や &(アドレス)を書かずに、ふつうの変数のように使えます。
flowchart LR a["int a = 10;"] r["int& r = a;<br/>(a の別名)"] r -->|"r = 20; と書くと"| a2["a も 20 になる"]
#include <iostream>
using namespace std;
int main() {
int a = 10;
int& r = a; // r は a の別名(参照)
r = 20; // r を変えると…
cout << a << endl; // 20(a も変わる)
int* p = &a; // 参考:ポインタなら & と * が必要
*p = 30;
cout << a << endl; // 30
return 0;
}
参照は「宣言と同時に必ず初期化」し、後から別の変数を指すことはできません。この単純さが、ポインタより安全と言われる理由です。
まとめ
参照は「変数の別名」。ポインタのように住所を意識せず書けて、nullptr(どこも指さない)になりようがないぶん安全です。次のレッスンで、参照のいちばんの使い道「参照渡し」を学びます。