在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,这样就很方便的把宽字符
转换成第三方所适应的窄字符。