2

この表によると、関数の適用は左側に関連付けられます。どういう意味ですか?のように二項演算子が複数回現れる場合、結合性は重要a - b - cです。それは関数の適用にどのように関連していますか? 代わりに右に関連付けられている場合、関数の適用はどのように異なりますか?

4

3 に答える 3

6

みたいなX(y)(z)?またはでしょう(X(y))(z)X((y)(z))?(ここで、とXの戻り値は呼び出し可能です)。Xy

于 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

Function call is left-associative. It is another way of saying that postfix operators have higher precedence than unary operators.

于 2012-11-12T10:58:21.603 に答える