为什么一个被允许而另一个却产生错误。任何可以解释的人。
#include<string>
using namespace std;
int main()
{
string s3 = "Why";
string s11 = "hello" + " , " + s3; // It gives error
string s11 = s3 + " , " +"hello" ; // This works fine.
}
由于运算符优先,该行
string s11 = "hello" + " , " + s3;
处理为
string s11 = ("hello" + " , " ) + s3;
该子表达式"hello" + " , "
不合法。第一项为类型char const [6]
(6的数组char const
),第二项为类型char const [4]
(4的数组char const
)。
+
两者之间没有运算符。这就是为什么它是编译器错误。
第二行
string s11 = s3 + " , " + "hello"
处理为
string s11 = (s3 + " , ") + "hello"
该子表达式s3 + " , "
有效,因为存在operator+
支持该操作的重载。子表达式的计算结果为std::string
。因此,后续+ "hello"
操作也是受支持的操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句