第10章 オブジェクト指向構文 / 第3回 模擬試験
PHPの`instanceof`演算子に関する次の記述のうち、正しいものはどれか。
`instanceof`は、オブジェクトが特定のクラスのインスタンスかどうかを判定する。
正解
`instanceof`は、2つの数値の大小を比較するための演算子である。
`instanceof`は文字列比較にのみ使用できる。
`instanceof`を使うには、対象のクラスをインスタンス化してはならない。
解説
`instanceof`演算子は、`$obj instanceof ClassName`のように使い、左辺のオブジェクトが右辺のクラス(またはその子クラス、あるいは実装しているインターフェイス)のインスタンスであるかどうかを`bool`で判定します。
他の選択肢が誤りである理由は次の通りです。
・数値の大小比較には`<`, `>`, `<=`, `>=`などの比較演算子を使います。`instanceof`はオブジェクトの型判定専用の演算子です。
・`instanceof`はオブジェクトに対して使う演算子で、文字列比較には使いません。
・`instanceof`を使うには、判定したいオブジェクトが既に生成(インスタンス化)されている必要があります。「インスタンス化してはならない」は逆の説明です。
例:
```
class Animal {}
class Dog extends Animal {}
$d = new Dog();
var_dump($d instanceof Dog); // true
var_dump($d instanceof Animal); // true(親クラスでもtrue)
```
(参照: 独習PHP 第4版 第10章 オブジェクト指向構文 10.4.3節 instanceof演算子 p.518〜519)