C++语法小记---类型检测

类型检测
  • C++使用typeid关键字进行类型检查

  • 不同的编译器使用typeid返回的类型名称不严格一致,需要特别注意

  • 也可以使用虚函数,返回各自的类型名

  • 如果typeid的操作数不是类类型(类指针也算)或者是没有虚函数的类,则typeid指出该操作数的静态类型。如果操作数是定义了至少一个虚函数的类类型,则在运行时计算类型

 

 1 #include <iostream>
 2 #include <string>
 3 #include <typeinfo>
 4 
 5 using namespace std;
 6 
 7 class Base 
 8 {
 9 public:
10     virtual void func() {}
11 };
12 
13 class Derived : public Base 
14 {
15 };
16 
17 int main() 
18 {
19     Derived* pd = new Derived;
20     Base* pb = pd;
21 
22     cout << typeid( pb ).name() << endl;   // prints "class Base *"  类指针 --- 静态类型
23     cout << typeid( *pb ).name() << endl;  // prints "class Derived"
24     cout << typeid( pd ).name() << endl;   // prints "class Derived *"
25     cout << typeid( *pd ).name() << endl;  // prints "class Derived"
26 
27     delete pd;
28     return 029 }

 

转载于:https://www.cnblogs.com/chusiyong/p/11315632.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值