リファレンスを初期化してそこに再初期化しなければならない場所をどこからでも読みました。C++で参照を再割り当てすることはできますか?
私の理解をテストするために、私は以下の小さなプログラムを書いています。私は実際に参照を再割り当てに成功したようです。誰かが私のプログラムで実際に何が起こっているのかを私に説明することはできますか?
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
int main()
{
int i = 5, j = 9;
int &ri = i;
cout << " ri is : " << ri <<"\n";
i = 10;
cout << " ri is : " << ri << "\n";
ri = j; // >>> Is this not reassigning the reference? <<<
cout << " ri is : " << ri <<"\n";
getch();
return 0;
}
コードは罰金コンパイルし、私が期待するように、出力は次のようになります。
ri is : 5
ri is : 10
ri is : 9
なぜ 'const int&cri = i'は許可されていませんか?どのラインでそれを書くことができないのですか?私のためにコンパイラは、任意の場所にそのような行を挿入することができます。それとは別に、それは明確かつ簡潔な答えです! – mercury0114
私はそれが許可されていないとは言いませんでした - あなたが観察したように、const以外の変数へのconst refを取っても問題ありません。私はあなたにそれを割り当てさせてはいけないと言った。つまり、OPが 'ri'で行ったように、constを使って元の変数を変更することはできない。 – Useless
ああ、私はあなたが何を意味するかを見ている。 – mercury0114