c++;字符串+;=它是如何实施的? 我只是好奇C++的Str++../P>的实现

c++;字符串+;=它是如何实施的? 我只是好奇C++的Str++../P>的实现,c++,string,C++,String,这会有任何表现上的惩罚吗? 哪一个应该更快 String a = "xxx"; a += "(" + "abcd" + ")" 或 如果+=操作符不是通过调用append实现的,我会非常惊讶 事实上,对于basic\u字符串,表示: basic\u string和operator+=(const basic\u string&s)相当于append(s) 此外,案文如下: 它们之间没有区别,实际上+=操作符的实现只是调用append。 我是从STL代码中读到的。考虑到他们在标准中有逐字逐句的相

这会有任何表现上的惩罚吗? 哪一个应该更快

String a = "xxx";
a += "(" + "abcd" + ")"


如果
+=
操作符不是通过调用
append
实现的,我会非常惊讶

事实上,对于
basic\u字符串
,表示:

basic\u string和operator+=(const basic\u string&s)
相当于
append(s)

此外,案文如下:


它们之间没有区别,实际上+=操作符的实现只是调用append。
我是从STL代码中读到的。

考虑到他们在标准中有逐字逐句的相同规范,很难想象一个合理的实现,因为他们的运行时成本会有所不同:

21.4.6基本字符串修改器[字符串修改器]

21.4.6.1基本字符串::运算符+=[string::op+=]

basic_字符串和运算符+=(const basic_字符串和str)

1效果:调用
追加(str.data,str.size())。

2返回:
*此

21.4.6.2基本\u字符串::追加[string::追加]

basic_字符串和append(const basic_字符串和str)

1效果:调用
append(str.data(),str.size())。

2返回:
*这个。


仅供参考。请看以下内容:[C++中的高效字符串串联][1][1]:它解释得很好。@SpyrosR:它确实解释得很好,但用于不同的运算符。谢谢!实际上我的问题没有被很好地描述。。。我现在改变了它,从SpyrosR @的地址找到了答案。C++ STDLIB不是SGI接口的直接拷贝。最好用作参考,说明基本相同。
String a = "xxx";
a.append("(");
a.append("abcd");
a.append(")");
basic_string& operator+=(const basic_string& __s) { return append(__s); }