More Effective C++之22

原创 2006年06月18日 02:27:00
条款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;
}
对实现一,也许编译器要花费一个临时对象的成本;但对于实现二,肯定要花费一个局部对象的成本;如果一定要选择一种写法,请选择第一种。而且我们在调用操作符的时候,优先调用复合形式。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

[More Effective C++]条款22有关返回值优化的验证结果

(这里的验证结果是针对返回值优化的,其实和条款22本身所说的,考虑以操作符复合形式(op=)取代其独身形式(op),关系不大。书生注) 在[More Effective C++]条款22的最后,...

more effective c++之Item M1:指针与引用的区别

1.参数为引用不用判断为空,指针需要判断空指针; 2.有些函数返回应用比返回指针从语法和形式上更好,例如重载operator [ ]。 指针与引用看上去完全不同(指针用操作符“*”和“->...

《More Effective C++》学习心得(七) 构造函数私有化

一.只允许一个对象的生成 每当产生一个对象,就会有一个构造函数被调用,如果“阻止某个class产出对象”,最简单的办法就是将其constructors 声明为private: #include ...

More Effective C++:自增和自减

很久以前(八十年代),没有办法区分++和--操作符的前缀与后缀调用。这个问题遭到程序员的报怨,于是C++语言得到了扩展,允许重载increment 和 decrement操作符的两种形式。 ...

看了下More Effective C++,做了点小结

今天主要是学习More Effective C++ 1) 指针和引用的使用 指针:在对象为空时;不同的时刻指向不同的对象时 引用:总指向一个对象,并且一旦指向这个对象就不再改变时; 当时重载某个...

more effective c++——Item M29 引用计数(二)带静态成员变量的rfstring类实现

more effective c++——Item M29 引用计数(一)简略的rfstring类设计和写时拷贝 这篇博客中所实现的引用计数还存在未解决的问题——如何通过相同的值多次构造rfstri...

More Effective C++之Item M5:谨慎定义类型转换函数

C++编译器能够在两种数据类型之间进行隐式转换(implicit conversions),它继承了C语言的转换方法,例如允许把char隐式转换为int和从short隐式转换为double。因此当你把...

More Effective C++----(4)避免无用的缺省构造函数 & (5)谨慎定义类型转换函数

Item M4:避免无用的缺省构造函数 缺省构造函数(指没有参数的构造函数)在C++语言中是一种让你无中生有的方法。构造函数能初始化对象,而缺省构造函数则可以不利用任何在建立对象时的外部数据就能初始化...

More Effective C++:自增和自减

很久以前(八十年代),没有办法区分++和--操作符的前缀与后缀调用。这个问题遭到程序员的报怨,于是C++语言得到了扩展,允许重载increment 和 decrement操作符的两种形式。 ...

More Effective C++ ——01_指针与引用的区别

条款一:指针与引用的区别  指针与引用看上去完全不同(指针用操作符’*’和’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。   问题:你如何决定在什么...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)