【问题标题】:Difference between assignments operator (+= and =)赋值运算符(+= 和 =)之间的区别
【发布时间】:2019-11-07 04:27:38
【问题描述】:

我已经编写 c++ 有一段时间了。不过,我的问题可能仍然很幼稚。 :)

+= 和 + 有什么区别。例如

std::string a = "Hi";
a += "b" + "c";

std::string a = "Hi";
a = a + "b" + "c";

如果有任何区别,哪个更优化使用?哪个操作数较少?

【问题讨论】:

  • 编译器应该处理优化
  • 我相信原来的 C 对 += 使用了不同的汇编指令,它更加优化。现在它并没有太大的区别。编译器会为你优化它。
  • 请注意,因为a += "b" + "c"; 添加"b" + "c" 中没有涉及string,编译器可能会感到不安。
  • @Satarakar 我会说是的,除了 user4581301 可能对 std::string 有一点看法:它可能略有不同。否则,是的,这是一个骗局。

标签: c++


【解决方案1】:

在这个具体的例子中,有一个很大的区别:a += "b" + "c"; 不能编译,而 a = a + "b" + "c"; 可以。前者试图添加两个指针,这在语法上是无效的。后者添加了一个std::string 和一个char* 指针,恰好有一个合适的operator+ 重载。

【讨论】:

    猜你喜欢
    • 2014-10-26
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 2012-02-22
    • 2015-07-10
    • 2012-03-04
    • 2011-05-24
    • 2016-05-18
    相关资源
    最近更新 更多