実行中にポインタのクラス情報を取得します。

1454 ワード

const char*cs=typeid(*point).name()
上のコードは、ポインタが指すクラスのタイプ名を得ることができます。
次のコードは、あるポインタが指すインスタンスがあるクラスのインスタンスかどうかを判断します。javaのinstance ofに相当します。
#include <iostream>

 

using namespace std;

 

class A{

      virtual void f(){};

};

 

class B: public A{

};

 

int main()

{

    A *a = new B;

    if (typeid(*a) == typeid(B))

    {

         cout << "a is pointed to B object" << endl;

         B *b = dynamic_cast<B*>(a);

    }

    getchar();

    return 0;

}