Item 18. Function Objects
Item 19. Commands and Hollywood
Item 20. STL Function Objects
1、unction Objects是什么
函數對象聽起來挺嚇人,其實并不神秘,它也是一個類的對象,只不過該類重載了操作符(),使得對象使用以來跟函數一樣。
class Fib {
? public:
??? Fib() : a0_(1), a1_(1) {}
??? int operator ();
? private:
??? int a0_, a1_;
};
int Fib::operator () {
??? int temp = a0_;
??? a0_ = a1_;
??? a1_ = temp + a0_;
??? return temp;
}
Fib fib;
int x = fib(); //相當于調用fib.operator()
2、Commands模式
把一個函數對象用為callback,即把一個函數對象當作參數傳到另一個函數中,在那個函數中調用函數對象的方法。
3、函數對象在STL中的應用
STL中的很多算法都用到函數對象