今天我写了一个表达:
"<" + message_id + "@" + + ">"
^
|
\____ see that extra '+' here!
并惊讶地发现它实际上已编译。 (PS
message_id
是QString
,它也可以与std::string
一起使用)我经常做这样的事情,在工作时忽略变量,我希望编译器告诉我我仍然缺少条目。决赛看起来像这样:
"<" + message_id + "@" + network_domain + ">"
现在,我想知道为什么
+
一元运算符对字符串文字有效! 最佳答案
一元+
可以应用于算术类型值,无作用域枚举值和指针值,因为...
C++标准在C++ 11§5.3.1/7中以这种方式定义它。
在这种情况下,字符串文字(类型为char const
)会衰减为指向char const
的指针。
当人们对某事物的功能感到疑惑时,查看文档始终是一个好主意。
“一元+
运算符的操作数应具有算术,无作用域枚举或指针类型,并且
结果是参数的值。积分提升是对积分或枚举操作数执行的。
结果的类型就是提升的操作数的类型。”
关于c++ - 一元加号(+)对文字字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20439442/