【发布时间】: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 Bailey 的this answer 关于传递引用/值的差异)
【问题讨论】:
-
stackoverflow.com/questions/13826897/… 这可能是一个更好的副本,其中包含了为什么可以将右值传递给期望 const 左值引用的函数的一些理念。
-
啊,实际上我找不到更简单的描述方法,谢谢你提到老问题@NathanPierson 我会检查一下。我只是明白
const int& x = 1是一回事 :)
标签: c++ parameter-passing pass-by-reference