首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 编程交流与学习--More Effective C++的学习-Item M21:通过重载避免隐式类型转换
【标  题】:编程交流与学习--More Effective C++的学习-Item M21:通过重载避免隐式类型转换
【关键字】:--More,Effective,C++,-Item,M21
【来  源】:http://blog.csdn.net/swordll80/archive/2006/10/22/1345777.aspx

编程交流与学习--More Effective C++的学习-Item M21:通过重载避免隐式类型转换

class UPInt {                                 // unlimited precision

public:                                       // integers

  UPInt();

  UPInt(int value);

  ...

};

upi3 = upi1 + 10;

upi3 = 10 + upi2;

    这些语句也能够成功运行。方法是通过建立临时对象把整形数10转换为UPInts(参见条款M19)。  建立临时对象进行类型转换工作是有开销的,而我们不想承担这种开销。我们的目的不是真的要进行类型转换,而是用UPintint做为参数调用operator+。隐式类型转换只是用来达到目的的手段,但是我们不要混淆手段与目的。还有一种方法可以成功进行operator+的混合类型调用,它将消除隐式类型转换的需要。如果我们想要把UPIntint对象相加,通过声明如下几个函数达到这个目的,每一个函数有不同的参数类型集。

const UPInt operator+(const UPInt& lhs,      // add UPInt

                      const UPInt& rhs);     // and UPInt

const UPInt operator+(const UPInt& lhs,      // add UPInt

                      int rhs);              // and int

const UPInt operator+(int lhs,               // add int and

                      const UPInt& rhs);     // UPInt

    C++中有一条规则是每一个重载的operator必须带有一个用户定义类型(user-defined type)的参数。

    不过,必须谨记8020规则(参见条款M16)。没有必要实现大量的重载函数,除非你有理由确信程序使用重载函数以后其整体效率会有显著的提高。

 

 
编程交流与学习--More Effective C++的学习-Item M22:考虑用运算符的赋值形式(op=)取代其单独形式(op):【上一篇】
编程交流与学习--More Effective C++的学习-Item M20:协助完成返回值优化:【下一篇】
【相关文章】
  • 编程交流与学习--More Effective C++的学习-Item M22:考虑用运算符的赋值形式(op=)取代其单独形式(op)
  • 转载:C/C++深层探索(四十三)
  • Win32环境下两种用于C++的线程同步类(上)
  • Win32环境下两种用于C++的线程同步类(下)
  • 转载:C/C++深层探索(四十二)
  • 如何使用Lua扩展C/C++应用(ZT)
  • DooDle(涂鸦)画图程序(C++课题设计)
  • VC++中可能遇到的问题
  • C++ 中不能重载的运算符
  • C++文曲星里的猜数字游戏
  • 【随机文章】
  • 龙芯软件开发(6)--CPU龙芯2E
  • 硬盘报错的问题的解决
  • 无线网卡NW2210/NWH4010/NWH630
  • 轻轻松松产生Makefile
  • socket实例 转载
  • 本周ASP.NET英文技术文章推荐[12/10 - 12/16]
  • 面向对象程序设计考试题库 (附答案)
  • 24口10/100M(3COM)交换机
  • SQL循序渐进(21)更多的子查询
  • 显示隐藏鼠标
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.