【问题标题】:Difference between const reference and pass by value in c++? [duplicate]c++中const引用和按值传递的区别? [复制]
【发布时间】:2020-06-02 16:25:18
【问题描述】:

如果我有一个将所有 const 引用作为参数的函数和另一个带有值的函数......那么在这两种情况下,值都不会被修改..那么为什么首选使用 const 引用?

【问题讨论】:

  • 引用指向同一个对象,传值复制整个对象。这是性能问题
  • @RoQuOTriX 和语义。除了可能性,因为有些是不能复制的。
  • 基本上,按值传递会复制对象。有时您无法复制对象,有时复制对象的成本很高(例如容器)。有时,当对象非常小时,复制效果会更好,例如 int 或指针。
  • 不仅仅是性能。这是根本不同的事情(想想突变的影响)

标签: c++


【解决方案1】:

按值传递,基本上会创建参数的本地副本,因此通过引用传递更好,但您可能希望避免函数更改您通过引用传递的变量,假设您只想将其打印在屏幕,然后将其标记为const,因此它无法更改,并且您避免复制它使您的程序更有效率。通过引用传递可能还有其他原因,例如,如果某些对象无法复制。

【讨论】:

  • 为什么会被否决?这是正确的。最近发生了很多奇怪的投票。
猜你喜欢
  • 1970-01-01
  • 2012-05-22
  • 2023-03-07
  • 2019-02-10
  • 2011-01-30
  • 2019-09-26
  • 1970-01-01
  • 2011-08-19
  • 2020-04-10
相关资源
最近更新 更多