在C ++中,我试图理解为什么在构造这样的字符串时没有出现错误:
const string hello = "Hello";
const string message = hello + ", world" + "!";
但是你得到一个编译时错误:
const string exclam = "!";
const string msg = "Hello" + ", world" + exclam
编译时错误是:
main.cpp:10:33: error: invalid operands of types ‘const char [6]’ and
‘const char [8]’ to binary ‘operator+’
为什么第一次运行正常但第二次产生编译时错误?
答案 0 :(得分:7)
如果你把它写出来会更有意义:
hello + ", world" + "!";
看起来像这样:
operator+(operator+(hello, ", world"), "!");
虽然
"Hello" + ", world" + exclam
看起来像这样
operator+(operator+("Hello" , ", world"), exclam);
由于没有operator+
需要两个const char
数组,因此代码失败。
然而,没有必要,因为您可以像下面这样连接它们(注意我刚删除了+
符号):
const string msg = "Hello" ", world" + exclam