我對C++中const引用的概念有疑問。Const引用 - C++
int i =10;
const int &j = i;
cout<<"i="<<i<<" j:"<<j; // prints i:10 j:10
i = 20;
cout<<"i="<<i<<" j:"<<j; // prints i:20 j:10
爲什麼第二j
語句不打印新值即20
。
如何引用任何變量表示它們之間的強結合。
我對C++中const引用的概念有疑問。Const引用 - C++
int i =10;
const int &j = i;
cout<<"i="<<i<<" j:"<<j; // prints i:10 j:10
i = 20;
cout<<"i="<<i<<" j:"<<j; // prints i:20 j:10
爲什麼第二j
語句不打印新值即20
。
如何引用任何變量表示它們之間的強結合。
const引用表示它不能改變反叛者的價值。但是,轉介可以改變它的價值,從而影響參考。我不知道你爲什麼得到你顯示的輸出。
我看不出有任何理由j
不會在第二cout
打印20
。
我跑這個代碼:
int main() {
int i =10;
const int &j = i;
cout<<"i="<<i<<" j:"<<j << endl; // prints i:10 j:10
i = 20;
cout<<"i="<<i<<" j:"<<j << endl; // prints i:20 j:10
return 0;
}
它給了我這樣的輸出:
i=10 j:10
i=20 j:20
見在線演示自己:http://ideone.com/ELbNa
這意味着,無論你是編譯器與工作有bug(這不太可能,因爲它是C++中最基本的東西),或者你沒有正確地看到輸出(這很可能是這種情況)。
+1或者他們沒有複製所有的上下文。 –
@Martin:是的..也許就是這樣...... – Nawaz
只需要在這裏添加一點,const
引用不需要左值初始化它。例如
int &r = 10; //ERROR: lvalue required
const int &cr = 10; //OK
在gcc 4.5.2上打印20 20,你在用什麼編譯器? – Torp
這是錯的。 http://ideone.com/IATb1你在使用什麼編譯器。 –
你用什麼編譯器試過這段代碼?這應該是不正確的,而且,正如我們所料,我無法用Visual Studio 2008重現它。 –