C ++赋值组合运算符与简单运算符与赋值运算符的组合

时间:2019-11-24 20:53:57

标签: c++ optimization operators variable-assignment composite

有人可以向我解释this的做法吗?

// no
string s1("abc");
string s2 = s1 + " " + s1;

// yes
string s1("abc");
string s2 = s1;
s2 += " ";
s2 += s1;
  

通常,一个简单的运算符会创建一个临时对象。在该示例中,运算符+创建临时字符串,其创建和销毁需要很多时间。

     

相反,使用+ =运算符的等效代码不会   创建临时对象。

使用复合运算符可以删除其中一个操作数(稍作优化),但是在这种情况下?

while(something)
{
    total+=(a-b)*c;
}

我应该使用另一个变量(否则结果将是错误的),以防止出现临时对象?

0 个答案:

没有答案