首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >常量引用- C++

常量引用- C++
EN

Stack Overflow用户
提问于 2011-08-08 00:31:02
回答 4查看 240关注 0票数 3

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

代码语言:javascript
运行
复制
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

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

EN

回答 4

Stack Overflow用户

发布于 2011-08-08 00:35:56

这是一个编译器错误。代码应输出20 20

票数 6
EN

Stack Overflow用户

发布于 2011-08-08 00:37:00

我看不出j为什么不在第二个cout中打印20

我运行了以下代码:

代码语言:javascript
运行
复制
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;
}

它给了我这个输出:

代码语言:javascript
运行
复制
i=10 j:10
i=20 j:20

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

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

票数 4
EN

Stack Overflow用户

发布于 2011-08-08 00:36:30

常量引用表示它不能更改refferant的值。然而,referrant可以改变它的值,这反过来会影响引用。我不知道为什么你会得到你所显示的输出。

It actually changes and see the output here.

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6974061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档