首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 编程交流与学习--More Effective C++的学习-Item M22:考虑用运算符的赋值形式(op=)取代其单独形式(op)
【标  题】:编程交流与学习--More Effective C++的学习-Item M22:考虑用运算符的赋值形式(op=)取代其单独形式(op)
【关键字】:--More,Effective,C++,-Item,M22,op,op
【来  源】:http://blog.csdn.net/swordll80/archive/2006/10/22/1345843.aspx

编程交流与学习--More Effective C++的学习-Item M22:考虑用运算符的赋值形式(op=)取代其单独形式(op)

C++来说,operator+operator=operator+=之间没有任何关系,因此如果你想让这三个operator同时存在并具有你所期望的关系,就必须自己实现它们。同理,operator -, *, /, 等等也一样。

template<class T>

const T operator+(const T& lhs, const T& rhs)

{ return T(lhs) += rhs; }

    表达式T(lhs)调用了T的拷贝构造函数。它建立一个临时对象,其值与lhs一样。这个临时对象用来与rhs一起调用operator+= ,操作的结果被从operator+返回。这个代码好像不用写得这么隐密。这样写不是更好么?

template<class T>

const T operator+(const T& lhs, const T& rhs)

{

  T result(lhs);                        // 拷贝lhs result

  return result += rhs;                 // rhs与它相加并返回结果

}

    operator的赋值形式(operator+=)比单独形式(operator+)效率更高。做为一个库程序设计者,应该两者都提供,做为一个应用程序的开发者,在优先考虑性能时你应该考虑考虑用operator赋值形式代替单独形式。

 
去四川大学笔试广东北电:【上一篇】
编程交流与学习--More Effective C++的学习-Item M21:通过重载避免隐式类型转换:【下一篇】
【相关文章】
  • 转载:C/C++深层探索(四十三)
  • openoffice2.04(En)提供下载
  • 检测和清除Rootkit的免费软件Sophos Anti-Rootkit
  • Win32环境下两种用于C++的线程同步类(上)
  • Win32环境下两种用于C++的线程同步类(下)
  • 转载:C/C++深层探索(四十二)
  • 如何使用Lua扩展C/C++应用(ZT)
  • Re: [Openvpn-users] OpenVPN, bridge-utils & protoc
  • 检测和清除Rootkit免费软件Sophos Anti-Rootkit
  • DooDle(涂鸦)画图程序(C++课题设计)
  • 【随机文章】
  • FreeBSD Unix的family tree
  • 投票系统饼状图
  • 界面设计如何征服客户(一)心理篇
  • 牛刀小试-PowerPoint 2003刻录功能
  • 『21天精通C++』第二周学习笔记(2-1)
  • 路由器性能指标详解
  • 红烧肉做法
  • Makefile(GNU)
  • JAVA的学习
  • Secure Coding in C++/CLI
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.