C では、パラメーターとして渡されるオブジェクトの型を決定することは、多態性クラスとその派生クラスを処理するために不可欠です。このシナリオは、関数が基本クラスのオブジェクトを受け入れる別の関数をオーバーライドする場合に発生しますが、オーバーライドする関数には派生クラスでのみ使用できる特定の関数へのアクセスが必要です。
この問題を解決するには、dynamic_cast を使用してキャストできます。オブジェクトを基本クラス型から派生クラス型に変換し、オブジェクトが目的の派生クラスに属しているかどうかを確認できます。
TYPE& dynamic_cast<TYPE&> (object); TYPE* dynamic_cast<TYPE*> (object);
Dynamic_cast は実行します。キャストの有効性を検証するための実行時チェック。実際のオブジェクト型と一致しない型のポインタまたは参照へのキャストである場合、結果はそれぞれ NULL になるか、bad_cast 例外がスローされます。
dynamic_cast には基本クラスが必要であることに注意することが重要です。正しく機能するためには、少なくとも 1 つの仮想関数が必要です。これは、実行時型情報 (RTTI) が多態性クラスでのみ使用できるためです。実際には、ほとんどの基本クラスには、派生クラス オブジェクトが基本ポインターから削除されたときに適切にクリーンアップできるようにする仮想デストラクターがすでに用意されています。
以上がC 関数に渡されるオブジェクト型を識別するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。