Pass by Reference & Pass by Value
在 Python 裡面,假設我們有一個 object A 和一個 object B,那麼當我們去做 B = A,那麼如果我們去修改 B 的值,那麼 A 也會一起被改到。
A = [1]
B = A
B.append(2)
print(A) # [1, 2]
這個概念稱為「Pass by Reference」,也就是 A 傳了 位置 給 B,而 A 和 B 在這之後,會「共用」這個位置的值。這種方式在多數的高階程式語言(如:Java),都是用這樣的方式去實作的。而當我們希望兩個人是不同的 object 時,我們會需要做所謂的 Deep Copy,也就是將這個 object 內的所有東西複製成另一個東西。
而在 C++ 當中,我們也可以藉由 & 的符號(跟位址同個符號)去傳一個參考值給函數。範例就像下面這樣: