一元加(+)反对文字字符串
今天我写了一个表达:
"<" + message_id + "@" + + ">"
并惊讶于它实际编译。 (PS message_id
是一个QString,它也可以用于std :: string)
我经常这样做,在工作时忽略一个变量,我希望编译器告诉我我仍然缺少条目。 决赛看起来像这样:
"<" + message_id + "@" + network_domain + ">"
现在我想知道为什么+一元运算符对字符串文本有效!?
一元+
可以应用于算术类型值,非范围枚举值和指针值,因为...
C ++标准在C ++ 11§5.3.1/ 7中对此进行了定义。
在这种情况下, char const
数组类型的字符串文字会衰减为指向char const
指针。
当人们对某些东西的功能产生疑问时,查看文档总是一个好主意。
“一元+
运算符的操作数应该有算术,无范围的枚举或指针类型,结果是参数的值。 整型提升在整型或枚举操作数上执行。 结果的类型是提升操作数的类型。“