stl 仿函式 函式物件

2021-08-13 23:00:03 字數 701 閱讀 3079

定義(stl原始碼剖析):

仿函式其實上就是乙個"行為類似函式"的物件。

即主體是物件,只是使用起來像乙個函式。

傳遞函式指標:

templatebool compare_to(const t& x, const t &y) 

templatevoid print_compare(t fun)

int main()

傳遞的是乙個函式指標

傳遞仿函式:

templatestruct compareto : public std::binary_function

public:

compareto() {}

};templatevoid print_compare(t fun)

int main()

這樣能看出來compareto的傳入像是乙個函式呼叫一樣。

實際上並不是如此,其上面的函式指標傳入邏輯是不一樣的,

仿函式:實際是傳入的是臨時建立的compareto的臨時變數,compare()呼叫的是建構函式,因此傳入的是物件

後面的呼叫在print_compare的呼叫實際是呼叫compareto的operator()的函式,因此仿函式是行為看起來更像傳入函式呼叫的物件

STL 仿函式(函式物件)

定義 一種具有函式特徵的物件,呼叫者可以像函式一樣使用該物件,為了能夠 行為類似函式 該物件所在類必須自定義函式呼叫運算子operator 就可以在仿函式物件後面加上一對小括號,以此呼叫仿函式定義的operator 操作。class mul2 class mul3 intmain for each ...

STL 函式物件(仿函式)概述

在stl提供的各種演算法中往往提供兩個版本,而第二個版本中往往第三個引數,就是乙個函式物件,第乙個版本中預設採用operator 來排序。函式物件可以看成是一種 操作 排序時兩兩相鄰元素滿足使這種操作為真,當然我們可以設計乙個函式,然後傳遞函式指標,但是我們需要抽象介面,函式指標不能與介面卡搭配使用...

STL (10)函式物件(仿函式)

2 謂詞 3 內建函式物件 概念 本質 函式物件 仿函式 是乙個類,不是乙個函式 特點 示例 include 1 函式物件在使用時,可以像普通函式那樣呼叫,可以有引數,可以有返回值 class myadd void test01 2 函式物件可以有自己的狀態 class myprint void o...