C 函式物件學習筆記

2021-07-23 17:57:53 字數 1133 閱讀 5749

c++似乎越來越希望和c撇清關係,在支援c的各種特性的前提下,又有一些獨有的對c的語法實現。函式物件很大程度上和函式指標作用類似,c裡有函式指標,相應c++有函式物件,當然,在c++情況下,函式物件肯定略顯強大一些。有了函式物件,感覺就算是邁出了函式式程式設計的第一步了。

只需要過載()就可以了,乙個例項

#include 

using

namespace

std;

class func_add

};template

t invoke(t x, t y, func_add& func)

int main()

這裡使用template,利用乙個invoke來呼叫func,func過載了()運算子,是乙個函式物件,main裡先建立了乙個函式物件,然後通過invoke來呼叫。

所以我們可以看到,使用函式物件本身是很簡單的,只需要過載括號運算子就可以使乙個類是乙個函式物件的類。

//作為基類

//定義了一元操作的引數類別和返回值類別

template

struct unary_function ;

//定義了二元操作的引數類別和返回值類別

template

struct binary_function ;

//算術操作符類 : plus(加), minus(減), multiplies(乘), divides(除), modulus(取模), negate(返回負)

//比較函式類 : equal_to(相等), not_equal_to(不相等), greater(大於), less(小於),greater_equal(大於等於),less_equal(小於等於)

//邏輯操作符類 :logical_and(邏輯與) logical_or(邏輯或), logical_not(邏輯非)

//以下內容又被稱為函式介面卡

//binder:通過將函式的某乙個引數bind為確定的值,而使得二元函式變為一元函式,bind1st, bind2nd,分別繫結第乙個引數和第二個引數

//否定器,求反器, negator:將函式物件求反,not1返回一元函式物件的反面,not2返回二元函式物件的反面

C 學習筆記 (函式物件(仿函式))

先考慮乙個簡單的例子 假設有乙個vector,你的任務是統計長度小於5的string的個數,如果使用count if函式的話,你的 可能長成這樣 bool lengthislessthanfive const string str int res count if vec.begin vec.end...

C 學習筆記6 函式物件

對於乙個運算子函式來說,它或者是類的成員,或者至少含有乙個類型別的引數。錯誤 不能為int重定義內建的運算子 int operator int,int sort words.begin words.end const string a,const string b class shorterstri...

c 學習 函式物件(仿函式)

過載函式呼叫操作符 的類,其物件常稱為函式物件 function object 即它們是行為類似函式的物件,也叫仿函式 functor 其實就是過載 操作符,使得類物件可以像函式那樣呼叫。注 1 函式物件 仿函式 是乙個類,不是乙個函式 2 函式物件 仿函式 過載了 操作符使得它可以像函式一樣呼叫。...