【发布时间】:2015-11-30 16:27:33
【问题描述】:
我有以下sn-p:
#include <string>
int main(int argc, char *argv[])
{
std::string a, b, c;
a + b = c;
return 0;
}
为什么这个 C++ 代码没有给出编译时错误?这可能是因为std::string::operator+ 的实现方式,但我的问题是:为什么要这样实现?在什么情况下需要这种行为?
【问题讨论】:
-
为什么会出现编译错误? a+B 返回一个有效的字符串对象。至于用途?它可能无法使用
-
@DavidHaim OP 可能预计它会失败,原因与
a, b, c和int失败的原因相同。 -
有人可以列出一个有效的用例吗?
-
@KarolyHorvath 任何有效的用例都会涉及带有副作用的构造函数、析构函数或
operator=;在任何其他情况下,该表达式的行为 AS A noop, imho. -
@PaoloM:我的意思是
std::string。
标签: c++ string move-semantics