求值顺序和结合性是两个不同的概念,以以下示例为例:
int x = func1() - func2() - func3(); //having int return types
func1()
将首先还是最后被计算,也就是说,你不知道哪个函数会被首先调用并返回其值,但是你知道与+
类似的结合律将从左到右,首先是func1() - func2()
然后是减法结果 - func3()
。operator+
的左到右结合性,表达式f1() + f2() + f3()
被解析为(f1() + f2()) + f3()
,但是在运行时,对f3()
的函数调用可能首先、最后或在f1()
或f2()
之间评估。