设置对第二个变量的引用

use*_*112 1 c++ reference

我期待b的值低于100,但我得到12.为什么会这样?显然我的c = b行不是将c指定为b的别名?

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int a = 4;
    int b = 12;
    int& c = a;

    c = 8;

    cout << a << endl;
    c = b;
    c = 100;

    cout << b << endl;


    int bb;
    cin >> bb;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Oli*_*rth 7

显然我的c = b行不是c作为别名分配b

确切地说,引用不能在C++中重新定位. c将永远是一个参考a.

c = b 只是一个简单的任务.


Stu*_*etz 6

你不能重新引用引用 - 你的c = b;行只是分配给c(a当时也是)当前的值b.

然后,当您分配100c,b因此不会更改,因此它12在打印时仍具有其原始值.

请参阅此FAQ问题:

http://www.parashift.com/c++-faq/reseating-refs.html