プログラミングの基礎(擬似言語のトレース)
クラス Counter は、インスタンスごとに整数型のメンバ変数 count(生成時は0)を持ち、メソッド inc() は自分の count に1を加える。次のプログラムを実行した後の x の値はどれか。
Counter: c1 ← new Counter()
Counter: c2 ← new Counter()
c1.inc()
c1.inc()
c2.inc()
c1.inc()
整数型: x ← c1.count × 10 + c2.count
- A13
- B31
- C44
答えと解説を見る
正解:B. 31
オブジェクト指向では、new Counter() はそのたびに新しいインスタンスを生成するので、c1 と c2 はそれぞれ別の count を持ちます。c1.inc() は c1 の count だけを増やすので、c1.count = 3、c2.count = 1 です。x = 3 × 10 + 1 = 31 になります。メンバ変数の値はインスタンスごとに別々に保持されます。
- A. c1 と c2 の count を取り違えた場合の値です。
- B. 正しい。c1.count = 3、c2.count = 1 です。
- C. count がすべてのインスタンスで共有されると考えた場合の値です。メンバ変数はインスタンスごとにあります。