프로그래밍의 기초(의사 코드 트레이스)
클래스 Counter는 인스턴스마다 정수형 멤버 변수 count(생성 시 0)를 가지며, 메서드 inc()는 자신의 count에 1을 더한다. Counter형 변수에는 인스턴스 자체가 아니라 인스턴스에 대한 참조가 들어간다. 다음 프로그램을 실행한 후의 x의 값은?
Counter: c1 ← new Counter()
Counter: c2 ← c1
c1.inc()
c2.inc()
c2 ← new Counter()
c2.inc()
integer: 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입니다.