c++技巧---尽量消除临时对象
帐 号: 注册帐号
密 码:  找回密码
      记住用户名和密码
c++技巧---尽量消除临时对象

在一些情况下,C++会“背着你”创建一些临时对象。一个临时对象的开销可能很大,因为它的构造和析构函数肯定会被调用。但是,在大多数情况下,您可以防止临时对象的创建。在下面的例子,一个临时对象被创建:

Complex x, y, z;x=y+z; /* temporary created */

  表达式y+z;将会导致一个Complex类型的临时对象的产生,这个临时对象保存着相加的结果。之后,这个临时对象被赋予x,随后销毁。临时对象的生成可以用两种方式加以避免:


Complex y,z;Complex x=y+z; /* initialization instead of assignment */
 

  在上面的例子中,y和z相加的结果直接用于对象x的构造,所以就避免了起中介作用的临时对象。或者你可以用+=代替+,同样可以达到相同的效果:


/* instead of x = y+z; */x=y;  x+=z;
 
  虽然采用+=的这个版本不太优雅,它只有两个成员函数调用:赋值操作和+=操作。相较而言,使用+操作符则产生三次成员函数调用:临时对象的构造、对于x的拷贝构造,以及临时对象的析构!

copyright:2016-2020|邮箱:imalib@vip.163.com

蜀ICP备16020986号