我在 VC++ 2015 中尝试了以下代码
#include <iostream>
#include <string>
using namespace std;
int foo(int v)
{
cout << v << endl;
return 10;
}
string bar(int v)
{
cout << v << endl;
return "10";
}
int main()
{
auto a = foo(1) + foo(2) + foo(3);
auto b = bar(10) + bar(20) + bar(30);
cout << "----" << endl << a << endl << b << endl;
return 0;
}
控制台的结果如下所示。
1
2
3
30
20
10
----
30
101010
众所周知,二进制+运算符具有左到右的结合性,并且可以通过对foo的三次调用进行确认。它们按照指令顺序从左到右被调用。 我的问题是,为什么这似乎对string::operator+不适用?我是否有一些误解?