参考C+的初始化+; 我最近开始学习C++,并无意中发现了这个问题。 如果听起来很愚蠢,请原谅,为什么我们不能通过 int r= 20; int &ref = r; ref(20);

参考C+的初始化+; 我最近开始学习C++,并无意中发现了这个问题。 如果听起来很愚蠢,请原谅,为什么我们不能通过 int r= 20; int &ref = r; ref(20);,c++,c++11,reference,initialization,C++,C++11,Reference,Initialization,虽然这种初始化值20的方法在不将其用作参考变量时有效 IDE:C++11 为什么会这样 虽然这种初始化值20的方法在不将其用作参考变量时有效 它在什么意义上起作用?现在对于编译器ref(20)看起来像一个函数调用,如果将int&ref更改为int-ref,仍然会得到相同的错误 我想你的意思是intr(20)确实有效。在引用的情况下,它们必须首先绑定到它们引用的变量,这使得绑定到变量并同时分配一个值是不可能的-如果这是您要问的。在您的示例中,它是在第2行初始化的。对于第3行,您可以使用ref=20

虽然这种初始化值20的方法在不将其用作参考变量时有效

IDE:C++11

为什么会这样

虽然这种初始化值20的方法在不将其用作参考变量时有效

它在什么意义上起作用?现在对于编译器
ref(20)
看起来像一个函数调用,如果将
int&ref
更改为
int-ref
,仍然会得到相同的错误


我想你的意思是
intr(20)确实有效。在引用的情况下,它们必须首先绑定到它们引用的变量,这使得绑定到变量并同时分配一个值是不可能的-如果这是您要问的。

在您的示例中,它是在第2行初始化的。对于第3行,您可以使用
ref=20
分配一个新值。或者您是想问为什么不能使用
int&ref(20)
?@Muscampester我知道我们可以使用
ref=20
,但我不明白为什么不能使用
ref(20)
。您也不能将其用于int,不确定你的意思是什么。请编辑问题以准确显示你想做的事情不起作用。非常感谢,我明白我做错了什么。当我初始化
r(20)
时,编译器认为我在向函数传递一个值。