众所周知,你不能使用 + 运算符连接两个字符串文字。
#include <iostream>
int main() {
std::cout << "hello " + "world";
}
// Error
这里发生的情况是你试图添加2个char*,这是一个错误。但是,你可以将字符串字面量添加到std::string中。
#include <iostream>
int main() {
std::string s = "hello ";
std::cout << s + "world";
}
// Fine, prints hello world
但我发现下面的代码也是有效的。
#include <iostream>
int main() {
std::string s = "world";
std::cout << "hello " + s;
}
// Fine, prints hello world
我想象在上面的例子中,您正在尝试将std :: string添加到char *中,但它可以正常工作。 我认为它可能只是使用+运算符的std :: string重载。我的问题是这里究竟发生了什么,以及在出现两个具有完全有效重载的不同类相加的情况下,运算符如何决定使用哪种重载。
operator+
对于std::string
有多个重载。 - Jarod42