ホームページ  >  記事  >  バックエンド開発  >  コールバック関数をいつ使用するか?

コールバック関数をいつ使用するか?

怪我咯
怪我咯オリジナル
2017-06-19 11:32:522157ブラウズ

要するに、呼び出される関数です。関数ポインタ (アドレス) をパラメータとして別の関数に渡し、このポインタがそれが指す関数を呼び出すために使用される場合、それを
と言います。
なぜ使用するのですか?
発信者と受信者を分離できるからです。呼び出し元は、呼び出し先が誰であるかは気にしません。知っておく必要があるのは、特定のプロトタイプと特定の制限 (戻り値 int など) を持つ呼び出される関数が存在することだけです。
コールバック関数が実際に何をするのかを知りたい場合は、まず、、クイックソート、シェルソート、シェイクソートなどの特定の
実装を提供するライブラリを作成したい状況があると仮定してみましょう。などなどですが、ライブラリをより多用途にするために、関数に並べ替えロジックを埋め込み、ユーザーが対応するロジックを実装できるようにしたくありません。または、ライブラリをさまざまな用途に使用したいと考えています。 int、float、
string
)このとき、どうすればよいでしょうか? を使用してコールバックを行うことができます。 コールバックは通知メカニズムに使用できます。たとえば、特定の時間に達するたびにプログラムでタイマーを設定する必要がある場合がありますが、通知メカニズムの実装者は通知メカニズムについて何も知りません。プログラム。現時点では、特定のプロトタイプ
が必要であり、このポインターを使用してコールバックを実行し、
イベント
が発生したことをプログラムに通知する必要があります。実際、SetTimer() API はコールバック関数を使用してタイマーに通知します。コールバック関数が提供されていない場合は、プログラムの にもメッセージを送信します。 コールバック メカニズムを使用するもう 1 つのメソッドは EnumWindow() です。これは、画面上のすべてのトップレベル ウィンドウを列挙し、各ウィンドウに対してプログラムが提供する関数を呼び出し、ウィンドウのハンドラーを渡します。呼び出し先が値を返した場合は反復を続行し、それ以外の場合は
終了
します。 EnumWindow() は、呼び出し先がどこにあるか、呼び出し先が渡したハンドラーで何をしたかを気にせず、戻り値に基づいて実行を継続するか終了するため、戻り値のみを気にします。
いずれの場合も、コールバック関数は C 言語 から継承されるため、C++ では、コールバック関数は、C コードとのインターフェイスを確立する場合、または既存のコールバック インターフェイスを処理する場合にのみ使用する必要があります。上記の場合を除き、C++ ではコールバック関数の代わりに仮想メソッドまたはファンクターを使用する必要があります。

以上がコールバック関数をいつ使用するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。