注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gmd20的个人空间

// 编程和生活

 
 
 

日志

 
 

C++ 运算符重载:赋值运算符和类型转换运算符(Cast Operator)  

2012-02-07 13:20:22|  分类: 程序设计 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Thinking in C++,  

Volume 1, 2nd Edition

一书的

第12章: Operator Overloading 

举了各种各样的运算符重载的例子,可以去参考一下。

其中

"Casting operators"

小节提到了“类型转换运算符”

 

看下面一个例子,根据

http://stackoverflow.com/questions/3814865/what-is-an-operator-int-function

的稍改了一下,

 

class INT

{

   int a;

 

public:

   INT(int ix = 0)

   {

      a = ix;

   }

 

   /* 类型转换运算符重载: */

   // 就是把这个类转换成重载的int类型的时候被调用。

   //有点类似赋值运算符,当对象在赋值操作的右边是通过重载

   //赋值运算符是没法做到的,就需要重载类型转换操作符

   operator int()

   {

      return a;

   }

 

 

   // 赋值运算符重载

   // 赋值运算符重载智能作为member函数来实现,而且在赋值操作的左边的对象时被调用

   INT & operator =(const int value)

   {  

      a = value;

      return *this;   

       

      //Thinking C++和  Effective C++ 都说应该返回this的引用

      // Effective C++(第三版 中文翻译) 条款15: 让operator返回*this的引用 http://www.kuqin.com/effectivec2e/ch04b.htm

          

 

   }

};

 

这样重载后,INT这个类就可以当作int一样来使用了,

 

INT i(5);

int ii=6;

 

i = ii;  // 调用 赋值运算符重载

ii = i;  //把i转换成int,调用类型转换操作符的重载函数 “operator int()” 

 

 

 

其他操作符重载参见thinking in c++ 

msdn也提到了“类型转换操作符”

"Cast Operator: ()"

http://msdn.microsoft.com/en-us/library/ts48df3y%28v=vs.80%29.aspx

  评论这张
 
阅读(943)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017