type_info和typeid

type_info提供了name、before等方法,可惜你却无法使用它。因为它的构造函数私有化。

typeid返回一个type_info,可惜你却无法保存它。

你只能使用:

    cout << (typeid(A)  ==  typeid(B)) << endl;
    type_info    t(
int );
    cout
<< t.name() << endl;
    
class     A {} ;
    
class     B    : public  A {} ;
    TypeInfo    info    
=  typeid(B * );
    A
*     p  =   new  A;
    cout
<< (typeid(p)  ==  info) << endl;
    delete    p;

    cout
<< " pointer: " << TypeTraits <  A *   > ::isPointer << endl;

    MyData
*     pdata     =   new  MyData;

    cout
<< (typeid( * pdata)  ==  typeid(MyData)) << endl;
    delete    pdata;

    MyData    data;
    cout
<< (typeid(data)  ==  typeid(MyData)) << endl;
    
class  SData    : public  MyData {} ;
    cout
<< (typeid(SData)  ==  typeid(MyData)) << endl;
    
const  type_info *     p     =   & (typeid( int ));
    cout
<< p -> name() << endl;

对于一个如此好用的东西无法保存无法创建太可惜了,而且loki后面也要用这个东西,所以loki提供了这样一个包装类,你可以创建、赋值、拷贝,可以使用before也提供name功能,还提供全部比较动作。

ps
before:

    cout << (typeid( int ).before(typeid( float ))) << endl;    //true
    cout
<< (typeid( float ).before(typeid( int ))) << endl;    //false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值