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

问题描述 投票:12回答:1

今天我写了一个表达式:

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

并且对它实际编译感到惊讶。 (PS message_id是一个QString,它也适用于std::string

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

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

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

c++ string-literals unary-operator
1个回答
9
投票

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

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

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

当人们对某些东西的功能感到奇怪时,查看文档总是一个好主意。


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

© www.soinside.com 2019 - 2024. All rights reserved.