給出下面的代碼示例;爲什麼一個const引用在分配一個l值和r值時行爲不同?
#include<iostream>
using namespace std;
int main(){
int a = 4;
const int &b = a;
const int &c = a * 2;
a = 10;
cout << b << endl;
cout << c << endl;
return 0;
}
當我運行此,輸出是
10
8
分配L值和R值以常量引用時,爲什麼C++設計成不同的表現?
對象c綁定到的對象與綁定的對象不同。 – GeorgeAl
每次更改'a'時,你希望''''''可以從表達式'a * 2'自動地重新評估'c'?這是**太雄心勃勃**! – Nawaz
是的,真正的問題是你認爲會發生什麼,以及爲什麼......當你考慮什麼是需要做出任何參考臨時涉及任何左值(S)總是反映任何變化左值(S ),事情很快變得荒謬無法管理,語法無望地模棱兩可,而且真的很可怕。從字面上看:RHS是一個臨時值,它是由'const'引用生命週期延長的。 _Effectively_,這就像聲明一個名爲'c'的const'lvalue,而不是引用,雖然機制當然是後者。 –