我知道这可能是一个常见的问题,并且我以前在SO上看到过类似的问题。我正在尝试理解"通过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& 返回可以防止我使用类似 y=1
的方法设置 t.x,这很好。然而,我期望在最后一行 y 为 1,但它仍然是零,就像 getX() 返回一个普通的 int 一样。这里到底发生了什么?
y
本身只是从getX()
复制而来,这并不使y
成为一个引用。因此你的期望是错误的。 - πάντα ῥεῖ