1

重複の可能性:
関数内で関数宣言を使用することはできますか?

関数内で関数を宣言できることを知っています。それの用途は何ですか?簡単な例を教えていただけますか?

4

2 に答える 2

6

後で関数を定義し、その関数でのみ使用できるようにする場合を除いて、関数内で関数を宣言することにはほとんど価値がありません。つまり、関数宣言はカプセル化されます。

int main() {
    void foo();
    foo();
}
void some_other_func() {
    foo(); // ERROR
}
void foo() {
}

しかし、それだけです。最も厄介な解析をトリガーすることと比較して、これはせいぜい非常に限られた利点です。

于 2011-10-05T08:30:49.330 に答える
0

AFAIK、C ​​/ C ++の関数内で関数を定義することは非標準であり、一部のコンパイラーのみがそれをサポートしています。ただし、新しいC ++機能、いわゆるラムダ関数を使用できます。

他の関数内で関数(またはラムダ関数)を定義すると、いくつかの点で役立ちます(実装によって異なります)。

  1. 関連するコードを近くに置いておくと、読みやすく、理解しやすくなります。
  2. 内部関数は、外部関数の変数に直接アクセスできる場合があります(したがって、パラメーターとして明示的に渡すものが少なくなります)。
于 2011-10-05T08:29:49.550 に答える