Class隐形类型转换的几种用法

      在C++编程中class的隐形类型转换一般是不建议使用的,主要还是出于使用的安全性。但是什么都有例外,在有的时候使用class的隐形类型

转换会为代码编写和阅读带来很多方便性。

 

实现外部值与内部值之间的自动转换

 

   在我们编程的过程中往往会发生标识一条数据外使用的值与内部使用的值并不相同。比如一个数据库管理类(CDbMng),可能在内部是通

过Id来标识一个用户,但是用户信息管理类(CUserInfo)和用户关系管理类(CRelation)对用户的标识是通过用户名称来实现的,所以这个

时候CDbMng向CUserInfo、CRelation所提供的方法所有涉及到用户标识的都定义成CNameToId类型,实现用户名称标识到Id标识的自动转换

零时变量

实现不同变量、不同类之间的相互运算

 

     在我们编程的过程中有时候要求提供不同变量、不同类之间相互运算的功能。比如一个人员管理的类CPersonnelMng,并且该类提供一个

查询当前人员总数的函数。要求实现CPersonnelMng和一个整数相加返回一个整数,就可以如下实现:

  class CPersonnelMng
  {
   public:
    CPersonnelMng(int nPersonnelNum){ m_nPersonnelNum = nPersonnelNum;}
    virtual ~CPersonnelMng(){}
   public:
    int  GetPersonnelNum(){return m_nPersonnelNum;}
   private:
       int  m_nPersonnelNum;
  };
  
   int GetTotalnPersonnelNum(CPersonnelMng oFirstPersonnel, CPersonnelMng oSecPersonnel)
   {
    return oFirstPersonnel.GetPersonnelNum() +  oSecPersonnel.GetPersonnelNum();
   }
  
 int  main()
   {
    CPersonnelMng  oPersonnelMng(2);
   
    int nTotalNum;
    nTotalNum = GetTotalnPersonnelNum(1, oPersonnelMng);
    printf("%i/r/n", nTotalNum);

    return 0;
}

 

实现宽字符与窄字符之间的自动转换

 

       在我们编程的过程中有时使用到了一些第三方库,而这些库使用的字符类型和我们自己的并不相同,比如我们使用的是宽字符,而第三方库

使用的是窄字符,这个时候我们可以考虑对这个第三方库进行封装,对所以函数的字符传入定义转换类CTranChar,这样就很方便的把宽字符

转换成第三方所适应的窄字符。

 宽字符

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值