C++とRTTI

RTTIとは,Run-Time Type Info のことで,実行時にその変数が何の型なのかという情報です.

で,C++である変数が実際何型なのかを調べたいときには,typeidキーワードを利用します.

class Person{…};
class Japanese:public Person{…};
class Chinese:public Person{…};

なとき,

int main(){
Person *p=new Japanese();
Person *q=new Chinese();
}

とすると,pもqも元は何型なのかわからなくなりますが,

int main(){
Person *p=new Japanese();
Person *q=new Chinese();
std::cout << "pは" << typeid(p) < std::endl;
std::cout << "qは" << typeid(p) < std::endl;
}

とすることで,それぞれが何型のインスタンスなのかがわかるらしい.

コメントする