15

今天我写了一个表达式:

"<" + message_id + "@" +  + ">"
                          ^
                          |
                          \____  see that extra '+' here!

并对它实际编译感到惊讶。(PSmessage_id是 a QString,它也可以与 a 一起使用std::string

我经常做这样的事情,在我工作的时候省略一个变量,我希望编译器告诉我哪里还缺少条目。决赛看起来像这样:

"<" + message_id + "@" + network_domain + ">"

现在我想知道为什么+一元运算符对字符串文字有效!?

4

1 回答 1

10

一元+可以应用于算术类型值、无范围枚举值和指针值,因为...

C++ 标准在 C++11 §5.3.1/7 中以这种方式定义它。

在这种情况下,类型为 的数组的字符串字面量char const衰减为指向 的指针char const

当人们想知道某物的功能时,查看文档总是一个好主意。


“一元运算+符的操作数应具有算术、无范围枚举或指针类型,结果是参数的值。对整数或枚举操作数执行整数提升。结果的类型是提升操作数的类型。”

于 2013-12-07T08:47:12.597 回答