C++ におけるデリゲートとは何を意味しますか?
質問
C++のデリゲートとはどういう意味ですか?最後のパラメータとして比較関数/ファンクターを取るC/C++のソート関数はデリゲートの形式ですか?
解決
「デリゲート」本当にC ++の用語の一部ではありません。 C#ではメンバ関数を呼び出すことも、オブジェクトのアドレスを格納することができる見せかけ関数ポインタのようなものです。あなたは確かに小さなライブラリ機能としてC ++でこのような何かを書くことができます。あるいはもっと一般的な:。boost::bind<>
でboost::function<>
を組み合わせる
は、C ++では、私たちは、用語「関数オブジェクト」を使用します。関数呼び出し演算子()。
を経由して「呼び出し可能」であるもの(関数ポインタを含む)された関数オブジェクトのstd ::ソートその引数を修正し、ブール値を返していない特殊な関数オブジェクトである「述語」をとります。
他のヒント
C ++でのコールバック関数は、(緩く)とすることができる(delegates
用語はこのために使用されていないが)delegate
の形態と称します。コールバック関数は、他の関数へのパラメータとして渡すために関数へのポインタを使用します。
しかし、C#での代表団は、C ++でのコールバック関数に比べ、より高度である。
仕事を委任するには他の人と作業負荷を共有することを意味します。実際の生活の中で、あなたがマネージャである場合、すなわち、あなたがどのように知らなくても、タスクを完了するために他人を期待し、あなたの作品を共有することになる。
、あなたのタスクを委任した場合の概念はC ++と委譲する能力を有する任意の他の言語と同じです。 Cでは、代理人としてこれを見ることができます:
int calculate(int (*func)(int c), int a, int b)
あなたはあなたのためのいくつかの作業を計算します別の関数に、ポインターを送信することが期待されているため。私は最近、<のhref = "http://blog.smartit.se/2009/11/30/function-pointers-in-c-and-python-and-their-possible-usage/" のrel = "nofollowを書きましたnoreferrer "> PythonとCで関数ポインタのブログ記事で、それをチェックアウトし、あなたはそれを参考になっ見つけるかもしれません。これは、CまたはC ++での作業を委任する「伝統的な」方法ではないかもしれませんが、その後、再び、termonoligyは私が少し右ます。
だと言います