関数オブジェクト

C++を使ってて,いい加減関数ポインタうけとるんじゃなくて関数オブジェクトを使おうかなと思う。

関数オブジェクトというのはオペレーターの()が定義されているクラスを指す。
そして,この関数オブジェクトをテンプレートにすれば完璧というかSTLなんかはみんなそうやってる。

ところでなんで関数オブジェクトが関数ポインタよりいいの?

Wikipediaに書いてある通りです。

つまりクラスの型を定義してインスタンスをつくってから渡す事によりメンバ変数とか使えるってのが便利な事。

たとえばメンバ変数つかって状態を管理したりとか,カウンターまわしたりしやすいでしょ,ってことでもちろんグローバル変数とかstaticとか使えば関数ポインタでも出来るんだけどもうすこし見やすくしようって感じですね。