ホームページ > バックエンド開発 > C++ > C で実行時にオブジェクトの型を決定するにはどうすればよいですか?

C で実行時にオブジェクトの型を決定するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-13 19:50:16
オリジナル
353 人が閲覧しました

How Can I Determine an Object's Type at Runtime in C  ?

C でのオブジェクトの型の検索

オブジェクトの型は、dynamic_cast を使用して決定できます。このメソッドは、あるポインターまたは参照型から別のポインターまたは参照型にデータを動的にキャストし、実行時にキャストの有効性を検証します。

使用法:

ポインター型にキャストするには:

TYPE* dynamic_cast<TYPE*>(object);
ログイン後にコピー

参照にキャストするにはtype:

TYPE& dynamic_cast<TYPE&>(object);
ログイン後にコピー

Result:

  • キャストが成功し、オブジェクトが目的の型である場合、結果はへのポインタまたは参照になります。
  • キャストが失敗した場合 (オブジェクトが目的の型ではない場合)、ポインター キャストの結果は NULL になります。参照キャストに対して bad_cast 例外をスローします。

ランタイム タイプ情報 (RTTI)

Dynamic_cast は RTTI に依存します。多態性クラス (つまり、少なくとも 1 つの仮想メソッドを持つクラス) で使用できます。実際には、これは重大な制限ではありません。ほとんどの基本クラスには、派生クラスで適切にクリーンアップするための仮想デストラクターがあるからです。

例:

これは、使用例です。オブジェクトがタイプ B であるかどうかを確認する Dynamic_cast:

class A {};
class B : public A {
public:
    void b_function() {}
};

void func(A& obj) {
    B* b_ptr = dynamic_cast<B*>(&obj);
    if (b_ptr != nullptr) {
        b_ptr->b_function(); // Object is of type B
    } else {
        std::cout << "Object is not of type B" << std::endl;
    }
}
ログイン後にコピー

以上がC で実行時にオブジェクトの型を決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート