为什么在C ++入门5中,引用没有变化,以下代码如何工作?

LEI*_*1ZH 2 c++ reference c++11

在这本书中,我们解释说,没有办法使引用引用不同的对象,下面的代码如何在c ++ 11中起作用。

int i1 = 1, i2 = 0;
int &ri = i1;
ri = i2;
Run Code Online (Sandbox Code Playgroud)

Tas*_*Tas 5

ri不会更改其指向的内容,而是会更改其指向的值。因此,如果您打印该值,如果i1您现在看到它等于0,并且如果您更改该值,i2您将看到它不影响ri

int main() {
    int i1 = 1, i2 = 0;
    int& ri = i1;
    ri = i2; // i1 == 0
    std::cout << "i1 " << i1 << "\n";
    i2 = 5;
    std::cout << "i2 " << i2 << "\n";
}
Run Code Online (Sandbox Code Playgroud)

输出是

i1 0
i2 5