【发布时间】:2019-12-19 14:28:32
【问题描述】:
为什么前者比后者更优(最好用简单的英语回答)?
为什么这种方法更好
str = "hello ";
str2 = "world";
str += str2;
比
str = "hello ";
str2 = "world";
str = str + str2;
【问题讨论】:
-
你在哪里看到它“更好”?
-
想想
str + str2返回什么 -
str + str2返回一个临时的,它被移动(在旧的编译器中甚至可以被复制)到str。因此使用了 3 个字符串(str、str2和临时字符串)。在str+= str2中你正在做的相当于str.append(str2),它不仅有2 个字符串在使用,而且如果str缓冲区足够大,它不需要为str重新分配缓冲区内存 -
您的“更优”前提是错误的,因为这两种方法在实践中可能同样最优。基于错误假设的问题的答案不一定有意义。此外,“更好”是一个主观术语。请说明一种方法应该以哪种方式更好(例如更快?更具可读性?更正确?等)。