为什么我可以将数字传递给接受 const 引用的函数? (C++)

Why I can pass a number to function which accepts const reference? (C++)

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

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

据我了解, 如果用 const 引用声明的函数[=31=,我可以像 SumVal(1, 2) 那样直接传递一个数字] 因为我 NOT 无法更改引用,所以无论如何 number(或变量)。编译器知道这一点并且不会抱怨它。

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

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

提前感谢您的意见。

(也可以看看CB Bailey's this answer关于路过reference/value的区别)

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