【问题标题】:Why I can pass a number to function which accepts const reference? (C++) [duplicate]为什么我可以将一个数字传递给接受 const 引用的函数? (C++)[重复]
【发布时间】:2022-01-31 07:16:29
【问题描述】:

我是 C++ 新手,在学习按引用传递时,我意识到我不能直接创建对数字的引用,它必须是一个变量。但是如果我定义一个接受 const 引用的函数,我可以在其中传递数字。

int SumVal(const int& a, int b)
{
    return a + b;
}

据我了解,如果函数声明为 const 引用,我可以直接传递一个数字,例如 SumVal(1, 2),因为我会不 能够改变引用,所以无论如何数字(或变量)。编译器知道这一点,不会抱怨。

但是如果我用像int SumVal(int& a, int b) 这样的普通引用来定义它,我就有机会在函数内部更改传递的变量,所以如果我将一个数字传递给这个函数,编译器会抱怨这个。

所以我想问问我的做法是正确的还是无意义的。

提前感谢您的 cmets。

(您也可以查看CB Baileythis answer 关于传递引用/值的差异)

【问题讨论】:

  • stackoverflow.com/questions/13826897/… 这可能是一个更好的副本,其中包含了为什么可以将右值传递给期望 const 左值引用的函数的一些理念。
  • 啊,实际上我找不到更简单的描述方法,谢谢你提到老问题@NathanPierson 我会检查一下。我只是明白const int& x = 1 是一回事 :)

标签: c++ parameter-passing pass-by-reference


【解决方案1】:

是的。这是因为 const 引用可以绑定到 r 值,但普通引用不能

【讨论】:

  • 这是规则。 OP有的是对规则的解释,是正确的。
猜你喜欢
  • 2021-02-22
  • 2015-12-29
  • 1970-01-01
  • 2015-12-14
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多