C 可呼叫物件有哪些

2021-10-25 01:14:06 字數 1614 閱讀 9273

如果乙個物件可以使用呼叫運算子(())來呼叫乙個函式,()裡面可以放引數,這個物件就是可呼叫物件。

可呼叫物件也有型別,例如每個lambda都有他自己唯一(未命名的型別)

我們可以像演算法傳遞任何類別的可呼叫物件,可呼叫物件分為以下幾種:

1. 函式和函式指標

2. 過載了函式呼叫運算子的類

3. lambda表示式

4. bind的物件

5. 利用function生成

6. mem_fn生成

不同型別的物件可能有相同的呼叫形式

template

struct printarray};

void

test04()

;qsort

(ia,

sizeof

(ia)

/sizeof

(int),

sizeof

(int

), fun)

;for_each

(ia, ia +

sizeof

(ia)

/sizeof

(int

), printarray<

int>()

);}

函式指標的缺點:無法持有自己的狀態,也無法達到元件技術中心的可適配性(無法二次修飾,改變狀態)

class testa	;

~testa()

;int

operator()

(int a,

int b)

; private:};

void

test01()

stl演算法接收的仿函式的就是該方法。要成為可配接的仿函式還需要做更多的事情。這部分在仿函式到底是什麼一節中敘述

function<

bool

(const string &

)> fcn =

&string:

:empty;

vector<

int> vect =

;find_if

(vect.

begin()

, vect.

end(

), fcn)

;

function必須要提供成員的呼叫形式,可以使用mem_fn讓編譯器自動生成

vector<

int> vect =

;find_if

(vect.

begin()

, vect.

end(),

mem_fn

(&string:

:empty)

);

auto f =

find_if

(vec.

begin()

, vec.

end(),

bind

(&string:

:empty, _1)

);

C 可呼叫物件

可呼叫物件 使用呼叫運算子來呼叫乙個可呼叫物件。呼叫運算子 為一對括號 裡面放置實參列表 可能為空 即匿名函式,不命名的可呼叫物件。每個lambda有它唯一的 未命名的,可以用auto宣告型別 類型別。完整結構 capture list parameter list return type 其中 r...

c 可呼叫物件 解惑

如有錯誤,還望指正。在閱讀書籍或者論壇的時候常常會遇到可呼叫物件的概念,很多人都沒有深入的理解這個概念,甚至有人會覺得函式就是可呼叫物件就是 函式,其實是不對的,在這裡給大家做一下詳細的解釋。可呼叫物件是c 長久以來存在的乙個概念,大體可以分為4種,分別是 1.函式指標 2.仿函式 3.可以被隱式轉...

C 可呼叫物件 function bind

void func int a intmain int argc,const char ar 仿函式定義 行為類似於函式的東西,c 中通過在類中過載 運算子實現。又稱函式物件 能行駛函式功能的類。class test intmain int argc,const char ar class test...