Guru of the Week 条款02: 临时对象

本文围绕代码中临时对象的使用展开,指出函数代码里多处存在不必要的临时对象,如参数传值、后增操作、参数转换、返回空字符串等情况。还给出优化建议,如用常量引用、先增操作、显式构造函数、单入口单出口规则等,避免产生临时对象以提升性能。

GotW #02 Temporary Objects

著者:Herb Sutter     

翻译:kingofark

[声明]:本文内容取自www.gotw.ca网站上的Guru of the Week栏目,其著作权归原著者本人所有。译者kingofark在未经原著者本人同意的情况下翻译本文。本翻译内容仅供自学和参考用,请所有阅读过本文的人不要擅自转载、传播本翻译内容;下载本翻译内容的人请在阅读浏览后,立即删除其备份。译者kingofark对违反上述两条原则的人不负任何责任。特此声明。

Revision 1.0

Guru of the Week 条款02: 临时对象

难度:5 / 10

(把你的心血之作(包括你的程序之性能在内)当成垃圾抛出窗外的罪人,往往是一些意想不到的临时对象。)

 

 

[问题]

 

试想你正在阅读另一个程序员写好的函数代码(如下),而这个函数中却在至少三个地方用到了不必要的临时对象。那么,你能发现其中的几个呢?程序员又该如何修改代码呢?

 

  string FindAddr( list<Employee> l, string name )
  {
  
  
    for( list<Employee>::iterator i = l.begin();
         i != l.end();
         i++ )
    {
  
  
      if( *i == name )
      {
  
  
        return (*i).addr;
      }
    }
    return "";
  }

 

 

[解答]

 

信不信由你,这短短的几行代码中就起码有三个地方明显的使用了不必要的临时对象,其中有两个比较微妙,第三个则是一计遮眼法(red herring)。

 

 

*        string FindAddr( list<Employee> l, string name )

---- 1 ----     ----

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值