在C++中,
function() = 10;
Run Code Online (Sandbox Code Playgroud)
函数如果函数通过引用返回变量,对吗?
有人请详细说明这个吗?
AnT*_*AnT 15
首先考虑这段代码
int *function();
...
*function() = 10;
Run Code Online (Sandbox Code Playgroud)
看起来很相似,不是吗?在此示例中,function返回指向的指针int,您可以通过对其应用一元运算*符以上述方式使用它.
现在,在这个特定的上下文中,您可以将引用视为"伪装指针".即引用是一个"指针",除了您不需要将*操作符应用于它
int &function();
...
function() = 10;
Run Code Online (Sandbox Code Playgroud)
一般来说,将引用等同于指针并不是一个好主意,但对于这个特殊的解释,它的效果非常好.
考虑以下代码,MyFunction返回一个指向int的指针,并将值设置为int.
int *i;
i = MyFunction();
*i = 10;
Run Code Online (Sandbox Code Playgroud)
你到目前为止和我在一起吗?
现在缩短到
*(MyFunction()) = 10;
Run Code Online (Sandbox Code Playgroud)
它与第一个代码块完全相同.
您可以将引用视为一个始终取消引用的指针.因此,如果我的函数返回一个引用 - 而不是一个指针 - 到一个int,frist代码块就会变成
int &i;
i = MyFunction();
i = 10;
Run Code Online (Sandbox Code Playgroud)
而第二个将成为
MyFunction() = 10;
Run Code Online (Sandbox Code Playgroud)
你还和我在一起?