根据该表,功能应用程序关联到左侧。这意味着什么?当二元运算符出现多次时,关联性很重要,例如在a - b - c
. 这与功能应用程序有什么关系?如果函数应用程序与右侧关联,它会有什么不同?
问问题
296 次
3 回答
6
像X(y)(z)
什么?可能是(X(y))(z)
或X((y)(z))
?(其中、和的X
返回值是可调用的)。X
y
于 2012-11-12T10:44:24.010 回答
1
您误解了该表,功能应用程序关联到左侧,而不是右侧。
它在处理返回其他函数的函数时发挥作用。
这是一个重要的例子:
#include <iostream>
template<typename T>
T id_1(T t) {
t(1);
return t;
}
typedef void (*func)(int);
void nothing(int x) {}
func print(int x) {
std::cout << x << std::endl;
return nothing;
}
int main() {
std::cout << "left associative:\n";
id_1(print)(2);
std::cout << "right associative:\n";
id_1((print)(2));
}
输出
left associative:
1
2
right associative:
2
于 2012-11-12T10:54:46.183 回答
0
函数调用是左关联的。换句话说,后缀运算符的优先级高于一元运算符。
于 2012-11-12T10:58:21.603 回答