程式設計基礎(虛擬碼追蹤)
類別 Counter 的每個實例各有一個整數型成員變數 count(建立時為0),方法 inc() 會將自己的 count 加1。Counter 型的變數中存放的不是實例本身,而是指向實例的參照。執行下列程式後 x 的值為下列何者?
Counter: c1 ← new Counter()
Counter: c2 ← c1
c1.inc()
c2.inc()
c2 ← new Counter()
c2.inc()
整數型: x ← c1.count × 10 + c2.count
- A11
- B21
- C33
查看答案與解析
正確答案:B. 21
c2 ← c1 只複製參照,c1 與 c2 指向同一個實例。因此 c1.inc() 與 c2.inc() 都增加同一個 count,c1.count 變為2。接著的 c2 ← new Counter() 使 c2 改為指向新的實例,之後的 c2.inc() 只把新實例的 count 設為1。x = 2 × 10 + 1 = 21。
- A. 這是以為 c2 ← c1 會複製實例時的值。實際上兩者指向同一個實例。
- B. 正確。c1.count = 2,新實例的 c2.count = 1。
- C. 這是以為 c2 ← new Counter() 之後 c2 仍與 c1 指向同一個實例時的值。