iZe*_*ify 1 c++ cout operator-overloading operator-precedence c++17
比方说,我有一个很长的声明
cout << findCurrent() << "," << findLowest() << "," << findHighest() << "," << findThird()<<"\n";
会像逻辑指令一样findCurrent()运行findLowest()吗?
从C++ 17开始,函数保证从左到右调用,即findCurrent()先调用,然后调用,findLowest()依此类推.
C++ 17标准参考:[expr.shift]/4(指表达式E1 << E2):
表达式
E1在表达之前进行测序E2.
[over.match.oper]/2 :(描述重载的运算符)
操作数按照内置运算符规定的顺序排序.
[intro.execution]/15:
表达
X被认为是前测序的表达Y,如果每个值的计算和与表达相关联的每个副作用X被每一个值的计算和与表达相关联的每个副作用之前测序Y.
在C++ 17之前,函数调用的顺序是未指定的,这意味着它们可以按任何顺序调用(并且在重复调用时此顺序不需要相同).
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |