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

More Effective C++之20

条款20:协助完成[返回值优化(RVO)]
       考虑以下的代码:
class Rational
{
       ……

       inline const Rational operator* (const Rational& lhs, const Rational& rhs)

{

return Rational (lhs.numerator()*rhs.numerator(),lhs.denominator()*rhs. denominator ());

}
……
}
这段代码的优点是什么?它把operator*的调用代价降到最低。一般调用如下:
Rational a = 10;
Rational b(1,2);
Rational c = a*b;

那么生成了多少个临时对象?答案是,对一般编译器,这个代价是0。编译器可以做到的优化是将lhs.numerator()*rhs.numerator(),lhs.denominator()*rhs. denominator ()的参数放到c的构造函数中去。记住const能引起这个优化,非const则不能。

[VC]怎么样把CDC上的一个图保存为bmp格式的图:【上一篇】
C++非面向对象的特征:【下一篇】
【相关文章】
  • 优化详解----深入优化 for C/C++
  • 亲身体验CORBA: 使用java和C++混合编程
  • More Threading and InDate is Almost Done.
  • C++学习体会--在类中创建线程
  • C++的名词解释
  • C++基础
  • More Effective C++之18
  • More Effective C++之19
  • 用C实现C++的多态---剖析GTK的"对象" (一)
  • 用C实现C++的多态---剖析GTK的"对象" (二)
  • 【随机文章】
  • Exchange Server关于文档属性扩充。
  • 去斑产品美白去斑方法去斑美白怎样去斑如何去斑康本有预防春天长斑的方法
  • Hear or Say?
  • 大家一起用gtk编程2(添加按钮和连接事件)
  • 青春痘的防治祛除青春痘如何去除青春痘怎样去除青春痘康本祛痘祛印套装帮你忙
  • 《Effective C#》Item 21:用委托实现回调
  • 在中抽象类和接口有什么相同和不同的地方?
  • 恢复系统用Win XP自带的“自动系统恢复”
  • 使用IP过滤,轻松管理网络(2)
  • 提高GSM系统接通率
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.