C++ 函数应用程序关联到左侧
根据,函数应用程序关联到左侧。这是什么意思?当二进制运算符多次出现时,关联性很重要,如在C++ 函数应用程序关联到左侧,c++,function,syntax,operators,associativity,C++,Function,Syntax,Operators,Associativity,根据,函数应用程序关联到左侧。这是什么意思?当二进制运算符多次出现时,关联性很重要,如在a-b-c中。这与函数应用程序有什么关系?如果函数应用程序与右侧关联,它会有什么不同?类似于X(y)(z)?可以是(X(y))(z)或X((y)(z))?(其中X,X和y的返回值是可调用的)。您误解了该表,函数应用程序关联到左侧,而不是右侧 它在处理返回其他函数的函数时发挥作用 以下是一个重要的例子: #include <iostream> template<typename T>
a-b-c
中。这与函数应用程序有什么关系?如果函数应用程序与右侧关联,它会有什么不同?类似于X(y)(z)
?可以是(X(y))(z)
或X((y)(z))
?(其中X
,X
和y
的返回值是可调用的)。您误解了该表,函数应用程序关联到左侧,而不是右侧
它在处理返回其他函数的函数时发挥作用
以下是一个重要的例子:
#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));
}
函数调用是左关联的。这是后缀运算符比一元运算符优先级更高的另一种说法。根据表,它是“从左到右”,我会说这意味着它“向左关联”。@sftrabbit应用程序不是一元运算符。它是一个二进制操作,lhs是一个函数,rhs是参数元组。
left associative:
1
2
right associative:
2