Const引用 - C ++

时间:2011-08-07 16:31:02

标签: c++ reference const

我对C ++中const引用的概念有疑问。

int i =10;   
const int &j = i;  
cout<<"i="<<i<<" j:"<<j; // prints i:10 j:10

i = 20;
cout<<"i="<<i<<" j:"<<j;  // prints i:20 j:10 

为什么第二个j语句不会打印新值,即20

如果对任何变量的引用表示两者之间存在强烈的联系,那该怎么可能呢。

4 个答案:

答案 0 :(得分:6)

这是一个编译器错误。代码应打印20 20

答案 1 :(得分:4)

我认为j无法在第二个20中打印cout的原因。

我运行了这段代码:

int main() {
        int i =10;   
        const int &j = i;  
        cout<<"i="<<i<<" j:"<<j << endl; // prints i:10 j:10

        i = 20;
        cout<<"i="<<i<<" j:"<<j << endl;  // prints i:20 j:10 
        return 0;
}

它给了我这个输出:

i=10 j:10
i=20 j:20

自己查看在线演示:http://ideone.com/ELbNa

这意味着,你正在使用的编译器有bug(这种情况不太可能,因为它是C ++中最基本的东西),或者你没有正确看到输出(很可能就是这种情况) )。

答案 2 :(得分:3)

const引用表示它无法更改refferant的值。但是,推荐人可以更改其值,进而影响参考。我不知道为什么你得到你显示的输出。

It actually changes and see the output here.

答案 3 :(得分:0)

在这里添加一个点,const引用并不需要左值来初始化它。例如

int &r = 10;            //ERROR: lvalue required
const int &cr = 10;     //OK