★参照(reference)★


参照とは、ポインタ変数と似たような動きをする仕組みです。

とりあえず、1つサンプルを作ってから説明します。

<sample program cpp042-01>

#include <iostream>

int main()
{
    int value = 12;

    int &ref = value;

    std::cout << "ref = " << ref << std::endl;

    ref = 18;

    std::cout << "value = " << value << std::endl;

    return 0;
}

<実行結果>

ref = 12
value = 18
続行するには何かキーを押してください・・・

参照は、

int &ref = value;

この「ref」というものです。

名前の前に「&」が付いていますが、アドレスという意味とは違うと考えておいてください。

宣言と同時に「value」を代入していますが、これも「値」を代入している訳ではありません。

参照ですから、変数valueへの参照を渡しています。

もう少しイメージしやすい言葉を使うと、

変数valueの「別名」がrefです。

ポインタ変数とは違うので、アドレスが入っているというイメージではありません。


std::cout << "ref = " << ref << std::endl;

refの中身を表示すると、valueの中身が表示されます。

ref = 18;

std::cout << "value = " << value << std::endl;

refに値を代入すると、valueの中身が変わります。

ポインタ変数と比べると「*」などを付ける必要が無いので楽に感じます。


ただ、ポインタ変数とは違うため注意しなければならない点があります。

<sample program cpp042-02>

#include <iostream>

int main()
{
    int value = 12;

    int &ref;

    ref = value;

    std::cout << "ref = " << ref << std::endl;

    ref = 18;

    std::cout << "value = " << value << std::endl;

    return 0;
}

<コンパイル結果>

error C2530: 'ref': 参照が初期化されずに宣言されています。
続行するには何かキーを押してください・・・

ポインタ変数と同じようなイメージで、参照を宣言だけしておいて、後から変数をセットするようにしてみました。

しかし、コンパイル時にエラーになりました。

参照は「別名」と言いましたが、何の「別名」か分からないまま宣言する事が出来ないのです。


次は関数引数としての参照を説明します。


次へ

戻る

目次へ