bad_cast クラス

提供: Appmethod Topics
移動先: 案内検索

Typeinfo.h:インデックス への移動


ヘッダー ファイル

typeinfo.h

説明

dynamic_cast が参照へのキャストに失敗した場合、式は bad_cast クラスを送出することができます。 dynamic_cast がポインタ型へのキャストに失敗した場合、結果はヌル ポインタになる点に留意してください。

実行時に型識別を行う方法

 #include <iostream>
 #include <typeinfo.h>
 
 using std::cout;
 
 class __rtti Alpha {
    virtual void func() {};  // これにより、Alpha は多態性クラス型となる。
 };
 
 class B : public Alpha {};
 
 int main(void)
 {
    B Binst;           // クラス B をインスタンス化
    B *Bptr;           // B 型ポインタを宣言
    Bptr = &Binst;     // ポインタを初期化
 
    // *** ここでのテストは実行時に行われる ***
 
    // 「*Bptr の型は何か」を確認
 
    if (typeid( *Bptr ) == typeid( B ) )
        cout << "Name is " << typeid( *Bptr).name();
 
    if (typeid( *Bptr ) != typeid( Alpha ) )
        cout << "\nPointer is not an Alpha-type.";
 
    return 0;
 }

プログラムの出力:

Name is B
Pointer is not an Alpha-type.