Const references - C++

Const references - C++

本文关键字:C++ references Const      更新时间:2023-10-16

我对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

如果对任何变量的引用都表示它们之间的强绑定,这是如何可能的

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

我不明白为什么j不会在第二个cout中打印20

我运行了下面的代码:

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++中最基本的东西),要么你没有看到正确的输出(这是最可能的情况)。

const reference表示它不能改变引用的值。然而,referrant可以改变它的值,从而影响引用。我不知道为什么你会得到你所显示的输出。

它实际上改变了,看看这里的输出

这里再补充一点,const引用不需要左值来初始化它。例如

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