这个范例是想展现 reference的特质
reference 相当于原本变量的别名 alias
(有些中文翻译会写成 "参考")
reference 宣告的时候就必须初始化绑定对象,而且一旦绑定,就固定绑定他一辈子。
范例中的 x 作为 传参考int& 到function f里面,绑定的是当初外面呼叫的int a=1
这时候在function f 里面, x 的数值还是 1 (因为绑定的是 int a)
接着,function f 又return x 给原本的呼叫者
所以,回来 f(a)这一行 得到的就是 x
x 刚刚讲过,绑定的是原本的变量a
这时候对 x 赋值 等价于 对变量a 赋值
f(a) = 5 等价于 x = 5 等价于 a = 5
所以,a 的值最终是 5
下方的范例做了小修改,可以留意,其实 x 和 a 操作的对象都位在同一个内存位置。
https://onlinegdb.com/ZxFCaqEKJQ
※ 引述《amamoimi (佛仔)》之铭言:
: 各位晚安打扰了
: https://onlinegdb.com/_DyNuxd2H
: 我一直不太明白为什么为什么这样写是合法的
: f(a)=5这行不是在把function call设值吗
: 但是照理来说只能assign value给变量吧?(gpt这样跟我讲的,但是他又说我的例子不是
: 设值给f(a)@@)
: 不好意思我好像越问越基本了...谢谢大家
:
: