C での "instanceof" 機能の実現
Java の "instanceof" 演算子を使用すると、開発者はオブジェクトが特定のクラスに属しているかどうかを確認できます。またはインターフェース。 C には完全に同等のものはありませんが、同様の機能を実現するメソッドはあります。
RTTI サポートによる動的キャスト
推奨されるアプローチには、実行時型情報 (RTTI) を使用した動的キャストが含まれます。 ):
<code class="cpp">if (NewType* v = dynamic_cast<NewType*>(old)) { // old was safely casted to NewType v->doSomething(); }</code>
このメソッドにはコンパイラで RTTI サポートが必要であることに注意してください。
getType() メソッドを使用する
別のアプローチRTTI を必要としない方法は、基本クラスで getType() メソッドを定義することです:
<code class="cpp">if (old->getType() == BOX) { Box* box = static_cast<Box*>(old); // Do something box specific }</code>
ただし、このアプローチには、複数レベルの継承の処理に制限があります。
考慮事項
動的キャストを使用する前に、その必要性を疑問視することが重要です。設計が悪いと過度の使用につながる可能性があります。よりオブジェクト指向のアプローチには、仮想関数またはビジターの使用を検討してください。
さらに、getType() メソッドのアプローチには、動的キャストと比較してパフォーマンス上の欠点があります。
以上がJava の「instanceof」機能を C で実現するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。