c++ 转换与类类型简单实例

在需要做数据类型转换时,一般显式的写法是:

[cpp]  view plain copy
  1. <span style="font-size:18px;">type1 i;  
  2. type2 d;  
  3. i = (type1)d; //显式的写类型转,把d从type2类型转为type1类型</span>  

这种写法不能做到无缝转换,也就是直接写 i = d,而不需要显式的写(type1)来向编译器表明类型转换,要做到这点就需要介绍一下“类型转换操作符”,拿最简单的基本类型封包解包来举例:

[cpp]  view plain copy
  1. class Integer  
  2. {  
  3. public:  
  4.     Integer(int v);  
  5.     Integer& opetaror =(const int &v); //重载赋值操作符,可以做到 Integer i = 10;//把i当基本数据类型使用  
  6.     operator int(); //重载类型转换操作符,可以做到int i; Integer it;  i = it; //it直接转为int类型,然后赋值给i  
  7.   
  8. private:  
  9.     int data;  
  10. };  
  11. Integer::Integer(int v)  
  12. {  
  13.     data = v;  
  14. }  
  15.   
  16. /*! 
  17.  *@brief 重载赋值操作符,可以做到 Integer i = 10;//把i当基本数据类型使用 
  18.  */  
  19. Integer& Integer::opetaror =(const int &v)  
  20. {  
  21.     data = v;  
  22.     return *this;  
  23. }  
  24.   
  25. /*! 
  26.  *@brief 重载类型转换操作符,可以做到int i; Integer it;  i = it; //it直接转为int类型,然后赋值给i 
  27.  */  
  28. Integer::operator int()  
  29. {  
  30.     return data;  
  31. }  
  32.   
  33. #include <iostream>  
  34. using namespace std;  
  35.   
  36. int main()  
  37. {  
  38.     Integer integer1(10); //调用构造函数进行初始化  
  39.     Integer integer2;  
  40.     int i1 = 10;  
  41.     integer2 = i1; //调用=赋值操作符进行赋值  
  42.   
  43.     //下面测试类型转换操作符的应用  
  44.     int i2;  
  45.     i2 = integer1; //integer1是Integer类型,这里直接把Integer类型转换为int,然后赋值给i2  
  46.                           //如果没有重载了int(),需要类型转换的话,这里必须写成 i2 = (int)integer1;  
  47.     return 0;  
  48. }  

这是int类型转换的写法,相应的,long,float,double等等的类型转换方法一样,统一的说,可以抽象的写成

operator type();只要type是一个类型,包括基本数据类型,自己写的类或者结构体都可以转换。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值