我知道這可能是一個常見問題,而我之前也見過類似的問題。我試圖圍繞「通過const引用返回」東西來包裝我的頭。我似乎在這個看似簡單的例子被卡住:強制引用不是「已更新」
#include <iostream>
using namespace std;
class Test {
public:
int x;
Test(): x(0) {};
const int& getX() const {
return x;
}
};
int main() {
Test t;
int y = t.getX();
cout << y << endl;
t.x = 1;
cout << y << endl; // why not 1?
}
我明白,const int的&返回防止我設置t.x使用類似y=1
,這是罰款。然而,我希望y在最後一行是1,但它仍然爲零,就好像getX()返回一個純int。這裏到底發生了什麼?
'y'本身僅會從'複製的getX()',不會使'y'參考。所以你的期望是錯誤的。 –