打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
c++中确定类型信息 typeid().name()
userphoto

2018.05.31

关注
 1 #include <iostream>
  2 #include <typeinfo>
  3 using namespace std;
  4 class X{virtual void foo(){}};
  5 class Y:public X{void foo(){}};
  6 class Z:public X{void foo(){}};
  7
  8 void func(X &x){
  9     if(typeid(x) == typeid(Y)){  //判断两个对象类型是否相同
 10         cout << "对Y对象处理" << endl;
 11     }else if(typeid(x) == typeid(Z)){
 12         cout << "对Z对象处理" << endl;
 13     }
 14 }
 15 int main(void){
 16     int x;
 17     cout << typeid(int).name() << endl; //i
 18     cout << typeid(x).name() << endl; //i
 19     cout << typeid(char).name() << endl; //c
 20     cout << typeid(unsigned int).name() << endl; //j
 21     cout << typeid(double[10]).name() << endl; //A10_d
 22     cout << typeid(int *[5]).name() << endl; //A5_Pi
 23     cout << typeid(int (*)[5]).name() << endl; //PA5_i
​ 24     cout << typeid(int (*[5])(int)).name() << endl; //A5_PFiiE
 25     class AA{};
 26     cout << typeid(AA).name() << endl;
 27     X *px = new Y;
 28     cout << typeid(*px).name() << endl;
 29
 30     Y y;
 31     func(y);
 32     Z z;
 33     func(z);
 34     return 0;
 35 }

tarena@ubuntu:~/cplus/day11$ ./a.out
i
i
c
j
A10_d
A5_Pi
PA5_i
A5_PFiiE
Z4mainE2AA
1Y
对Y对象处理
对Z对象处理


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
231 f0708
类的特化
5分钟搞懂C 函数指针与函数类型
2013搜狗校园招聘笔试题
C 中的函数指针和函数对象总结
C++11 bind和function用法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服