我知道我不允許寫long& const x
。但爲什麼不呢?理論上,我可以有一個不斷的參考x。我只是無法將引用設置爲另一個地址。爲什麼在C++中沒有常量引用?
爲什麼在C++中禁止使用?
編輯:我知道有些東西我不明白,但我可以指定另一個變量的引用。這段代碼的作品:
#include <iostream>
int main()
{
int a = 1, b = 2;
int & x = a;
x = b;
return 0;
}
但是,這是一個矛盾,你在哪裏。
我知道我不允許寫long& const x
。但爲什麼不呢?理論上,我可以有一個不斷的參考x。我只是無法將引用設置爲另一個地址。爲什麼在C++中沒有常量引用?
爲什麼在C++中禁止使用?
編輯:我知道有些東西我不明白,但我可以指定另一個變量的引用。這段代碼的作品:
#include <iostream>
int main()
{
int a = 1, b = 2;
int & x = a;
x = b;
return 0;
}
但是,這是一個矛盾,你在哪裏。
參考文獻已經始終保持不變。
在初始化之後,您不能重新指定它們以引用另一個變量,並且必須始終將它們初始化爲引用一個變量。
在你的榜樣,代碼沒有做什麼,你認爲它是:
x = b;
不重新分配x
指b
,它的b
的值賦給變量x
被引用,即a
。
對於變量,引用只是一個別名,另一個名稱。這意味着您可以用a
替代x
的每個實例,並且行爲將是相同的。
謝謝,這就是我一直在尋找的! – user2738748
我只是不能將引用設置爲另一個地址。
你已經做不到了。
引用是不可變的。添加const
不會使它們「更」不可變。
根本沒有理由補充這一點,並且有理由避免它可能帶來的混淆。
特別是,它會導致人們認爲引用是對象,他們不是。引用不是指向不同的外表。它們是參考文獻;另一個對象的別名。並且名稱不能是const
。
我可以給另一個變量分配一個引用。
不,你不能。
這與您所在的行爲是矛盾的。
不,這是你誤解你自己的代碼。通過x = b
,您可以將a
設置爲2
。
你是否錯過了引用總是不變的事實? –
const引用是這樣聲明的:'const long&x' –
*「但我可以給另一個變量賦值」* - 不,你不能;你的代碼實際上做的是將'b'的值移到'a'中,而不是重定位引用。請記住 - 作爲參考 - x是a的一個別名形式,所以無論你做什麼,它都會透明地影響'a' - 包括賦值。不能改變'x'來解決不同的對象。 –