一元加(+)反对文字字符串

今天我写了一个表达:

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

并惊讶于它实际编译。 (PS message_id是一个QString,它也可以用于std :: string)

我经常这样做,在工作时忽略一个变量,我希望编译器告诉我我仍然缺少条目。 决赛看起来像这样:

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

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


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

C ++标准在C ++ 11§5.3.1/ 7中对此进行了定义。

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

当人们对某些东西的功能产生疑问时,查看文档总是一个好主意。


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

链接地址: http://www.djcxy.com/p/12507.html

上一篇: Unary plus (+) against literal string

下一篇: Several unary operators in C and C++