为什么允许通过 const 引用而不是通过普通引用传递 R 值?

新手上路,请多包涵

以下程序

void display(const int& a)
{
    cout << a ;
}

如果用这样的文字调用将起作用

display(5);

但没有 const 它不会工作。

那么 const 引用如何继续指向 R 值(匿名变量)?

原文由 Mekacher Anis 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 407
2 个回答

对于你的最后一个问题:

const 引用如何继续指向 R 值(匿名变量)

这是答案。 C++ 语言说,本地 const 引用会延长临时值的生命周期,直到包含范围结束,但可以节省复制构造的成本(即,如果您要使用局部变量)。

原文由 Tanz87 发布,翻译遵循 CC BY-SA 3.0 许可协议

将任何对象想象为内部包含一些值的 _盒子_,盒子可能有也可能没有名称标签,即名称标签为 variable 的框 没有 名称标签的框为 literal .无论名称标签是否存在, 我们都有盒子。


Reference 是我们在盒子中添加名称标签的方式。

 int a = 5;
int &b = a;

我们的盒子有 两个 名称标签(里面有值 5 )。

 const int &c = 5;

你在那里,盒子刚刚命名。


以前从未有过名字的盒子的新名字必须标记为 const 。因为盒子里面的值可以通过它的名字来改变,我们不希望它发生 (不允许发生) 到我们的 literal 盒子。

原文由 Sithideth Bouasavanh 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题