为什么附加字符串str + = str2比str = str + str2更好?

时间:2019-08-13 03:43:33

标签: c++ string

为什么前者要比后者更好(用简单的英语回答更好)?

为什么这种方法更好

str = "hello ";
str2 = "world";
str += str2;

str = "hello ";
str2 = "world";
str = str + str2;

1 个答案:

答案 0 :(得分:2)

这里的问题是,更好的方法是什么。让我们假设,不太复杂的汇编代码,也许在速度和大小上都有优势。

这还取决于变量的限定符,并且在很大程度上取决于编译器和编译器选项。

天真的方法和理解始终是:对于x = x + y;,首先将计算加法的结果,然后将此结果(临时的)分配给原始变量。对于x += y,字符串y将直接附加到x。

如果是字符串,则通过调用字符串append函数来实现加法。

并且,如前所述,如果您不启用编译器优化,则将首先进行追加操作,然后进行赋值。您可以检查生成的汇编代码。因此x = x + y确实比x += y更复杂。但是,如果您启用了编译器优化功能(例如,对于gcc为-O3),则不会有任何区别。

“更好”可能还有其他解释。更具可读性,或更易于维护,或者符合某些编码准则或某些操作员过载约束。因此以某种方式很难给出确切的答案,其结果可能基于观点。

相关问题