我有幾個有關在C++中使用引用的問題。爲什麼我可以給引用指定一個新值,以及如何使引用指向其他內容?
在下面的代碼所示,它是如何工作的,並在線路
q = "world";
沒有給出一個錯誤?#include <iostream> using namespace std; int main() { char *p = "Hello"; char* &q = p; cout <<p <<' '<<q <<"\n"; q = "World"; //Why is there no error on this line cout <<p <<' '<<q <<"\n"; }
如何參考q也重新初始化到別的東西?
是不是字符串常量,
p = "Hello"
,恆定或只讀空間?所以,如果我們這樣做,q = "World";
不會在
p
這應該是恆定的字符串是否會改變?
我已閱讀關於C++引用類型的變量,因爲它們不能被重新初始化或重新分配,因爲它們被存儲「內部」作爲恆定指針。所以編譯器會給出錯誤。
但實際上如何重新分配參考變量?
int i; int &j = i; int k; j = k; //This should be fine, but how we reassign to something else to make compiler flag an error?
我想抓住這個參考,並在那可能錯過了一些關鍵的事情,所以這些問題。
所以任何指針來清除它,將是有益的。
準確地說,我的qns是,是什麼代碼將重新分配一個引用到其他東西(這在技術上是不允許的)我在OP中提到,j = k;很好,因爲我知道它會改變'裁判'的價值。 – goldenmean
沒有將重新分配參考的法定代碼。 – john