首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > More Effective C++之22
【标  题】:More Effective C++之22
【关键字】:More,Effective,C++
【来  源】:http://blog.csdn.net/hanyu1980/archive/2006/06/18/808434.aspx

More Effective C++之22

条款22:考虑以操作符复合形式(op=)取代其独身形式(op)
一般而言,操作符的复合版本比独立的版本效率要高,独立版本一般会返回一个新对象,所以要承担这个新对象带来的构造和析构成本;复合版本一般直接把数据写进左值。我们需要注意的是编译器一般会对不具名的对象进行优化,而对具名对象通常无能为力。所以对同样的实现,

template<class T> const T operator+(const T& lhs ,const T& rhs)

{
       //实现一
       return T(lhs) += rhs;
       //实现二
       T result(lhs);
       return result += rhs;
}
对实现一,也许编译器要花费一个临时对象的成本;但对于实现二,肯定要花费一个局部对象的成本;如果一定要选择一种写法,请选择第一种。而且我们在调用操作符的时候,优先调用复合形式。
some sentenses from The c++ programming language chapter9:【上一篇】
使用CDC的四个派生类CClientDC,CPaintDC,CWindowDC,CMetaFileDC:【下一篇】
【相关文章】
  • some sentenses from The c++ programming language chapter9
  • AES的C++实现(128位密钥)
  • C++学习问题
  • 高精度算法数据结构及常用函数实现(C++)
  • 打造自己的专业图像工具-Visual C++ 2005图像编程系列
  • More Effective C++之23
  • 打造自己的专业图像工具-Visual C++ 2005图像编程系列【一】
  • More Effective C++之24
  • C++ template 语法需要注意的问题!
  • C/C++进阶[5]
  • 【随机文章】
  • 在C#中调用Win32函数EnumWindows枚举所有窗口
  • PhotoImpact 6.0中文版入门教程-批处理命令
  • Linux中文件查找技术大全
  • M85扩容工作记录
  • struts 学习一(基础篇)
  • Haneng.com的简单留言板制作源程序例子
  • 32bit Convert It 9.52.01破解手记(4)
  • 用Flash MX制作飞舞的蝴蝶
  • Linux桌面远程控制工具-Xmanager(Windows下面的)
  • 读"C语言之死"有感
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.