我在任何地方都看過參考文件必須在那裏進行初始化,並且不能再次重新初始化。我們可以在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 2016-04-22 05:30:34
我沒有說這是不允許的 - 正如你所觀察到的,對非const變量採取const ref是沒有問題的。我說它不會讓你分配給that_,這意味着你不能通過const ref來改變原來的變量,就像OP用'ri'做的那樣。 – Useless 2016-04-22 08:22:29
哦,對,我現在明白你的意思了。 – mercury0114 2016-04-22 08:40:06