参照型の参照先は変えられない2011年07月22日 10時14分40秒

C++ の参照型は、定義時に初期化しなければならず、参照先は変えられない。と習ったのは既に十年以上も前。ふと、自分の記憶が正しいのか、そして当時の仕様は未だに変わっていないかが不安で実験してみた。

% less ref.c 
#include <iostream>

int main()
{
    int one = 1;
    int two = 2;
    int& ref = one; 
    std::cout << "ref: " << ref << " one: " << one << " two: " << two << std::endl;
    ref = two;
    std::cout << "ref: " << ref << " one: " << one << " two: " << two << std::endl;
}
% CC ref.c 
% ./a.out 
ref: 1 one: 1 two: 2
ref: 2 one: 2 two: 2

ref = two のせいで、変数 one の値も 2 になっているのが判る。やはり、参照先は変えられない。