#include "stdafx.h"
#include <iostream.h>int main(int argc, char* argv[])
{
int a=10;
int& b=a;//将引用变量b和变量a绑定.
int c=1111;
b=c;//这时重新和c绑定。
cout<<b<<endl;//看看b的值
return 0;
}结果是:1111
而且没有任何错误,难道我看搞错了吗?

解决方案 »

  1.   

    如果是常量只可引用一次
             int a=10;
    const int& b=a;//将引用变量b和变量a绑定.
    int c=1111;
    b=c;//这时重新和c绑定。//error!
    cout<<b<<endl;//看看b的值
    return 0;
      

  2.   

    你理解错误了
    int a=10;
    int& b=a;//将引用变量b和变量a绑定.
    b就是a的一个代名词,以后对b的操作就是对a的操作,如b=c;就是a=c;等同的。
    书上的意思可能是不能在用来代替其他的变量了,就像初始化一样int& b=d;。
    也就是只能绑定一次,不能重复绑定了。
      

  3.   

    我觉得是没有错的 
    b=c这个赋值语句实际上是使b指向的对象即是a的值被设置为c的值
    而b依旧指向a引用的不能改变是说引用一旦被定义,它就不能指向其他的对象而已,所以必须被初始化.引用的所有操作都是应用在它指向的对象身上
      

  4.   

    同意楼上两位的说法,引用不可以重复绑定,
    int& b=a;//将引用变量b和变量a绑定.
    int c=1111;
    b=c;//这时重新和c绑定??//这里不再是绑定,而是对b(也就是对a)赋值操作!
      

  5.   

    b=c 是将b赋值而不是初始化,所以当然可以了。 
    初始化是在创建对象时的操作, int& b=a// 创建b
      

  6.   

    加一条cout<<a<<endl;看一下就知道了。
      

  7.   

    呵呵,故事的发生是这样的:int a=10; //有一个整数a,兜里只有10块钱;
    int &b=a; //a的登录名叫作b;
    int c=1111; //另外一个富有的整数是c;
    b=c; //a用b这个登录名获得了c的钱财;
    cout<<c<<endl; //(1111);c自己不知道;
    cout<<a<<","<<b<<endl; //(1111, 1111)b(其实就是a啊)都已经发了。const int &b=a; //倘若a发誓:我不会用b这个外号骗钱的;
    b=c; //error!就会出错。
    int & const b=a; //a发誓:我不会转让这个外号的——编译器就会说:其实,这就是&的本来用法,所以不用const了。
      

  8.   

    哦,我是饭前开始写饭后提交的,没想到有那么多人都回应了,junping和aye等已经回答对了,不用给我分了。:)