Ale*_*lke 13 c++ string-literals unary-operator
今天我写了一个表达式:
"<" + message_id + "@" + + ">"
^
|
\____ see that extra '+' here!
Run Code Online (Sandbox Code Playgroud)
并且对它实际编译感到惊讶.(PS message_id是一个QString,它也适用于std :: string)
我经常做这样的事情,在我工作的时候遗漏一个变量,我希望编译器能告诉我在哪里我仍然缺少条目.决赛看起来像这样:
"<" + message_id + "@" + network_domain + ">"
Run Code Online (Sandbox Code Playgroud)
现在我想知道为什么+一元运算符对字符串文字有效!?
一元+可以应用于算术类型值,未范围的枚举值和指针值,因为......
C++标准在C++11§5.3.1/ 7中以这种方式定义它.
在这种情况下,字符串文字(其类型为array char const)衰减到指针char const.
当人们对某些东西的功能感到奇怪时,查看文档总是一个好主意.
"一元运算+符的操作数应具有算术,无范围枚举或指针类型,结果是参数的值.对整数或枚举操作数执行整体提升.结果的类型是提升的操作数的类型."
| 归档时间: |
|
| 查看次数: |
736 次 |
| 最近记录: |