我已经阅读了很多关于为什么不能在 C++ 中添加两个字符串文字等的帖子,并且 operator+ 支持将字符串文字添加到整数。
但是,我试图理解以下代码中的编译器错误:
string str1, str2, str3;
int i = 10;
str1 = "Hello " + i;
str2 = i + "Mars";
str3 = "Hello " + i + "Mars";
的初始化str1
和str2
工作正常,但构造str3
给出以下错误:
example.cpp:在函数中
int main()
: example.cpp:20:27:错误:类型和二进制
的无效操作数const char*
const char [5]
operator+
Q1:在错误信息中,我理解const char [5]
是指"Mars"
. 转换为 a 后const char*
的整数指的是什么?i
char *
Q2:operator+
具有从左到右的关联性,我猜测的构造str3
可以写成:
str3 = ("Hello " + i) + "Mars";
评估("Hello " + i)
为?char *
Q3:在以下代码中:
str5 = string("foo ") + "bar ";
str6 = string("foo ") + "bar " + i;
编译的设置str5
很好,但str6
会生成错误消息的负载(页面和一半)。结果是什么string("foo ") + "bar "
,是一个"string"
?
提前感谢您的任何见解。