成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++仿函數(shù)基本概念淺析

開發(fā) 后端
C++仿函數(shù)到底是什么呢?其實它就是一個能像函數(shù)一樣工作的東西,它的主要作用將會在這篇文章中進(jìn)行詳細(xì)的介紹。

C++編程語言為我們帶來了非常大的好處。不過即使是我們經(jīng)常使用的功能也有很多比較高深的內(nèi)容值得我們?nèi)ド钊氲奶接憽T谶@里我們將會為大家詳細(xì)介紹一下C++仿函數(shù)的基本概念,方便大家對這一語言的解讀。

C++仿函數(shù)這個詞經(jīng)常會出現(xiàn)在模板庫里(比如 STL),那么什么是仿函數(shù)呢?

顧名思義:仿函數(shù)就是能像函數(shù)一樣工作的東西,請原諒我用東西這樣一個代詞,下面我會慢慢解釋。

  1. void dosome( int i )  

這個 dosome 是一個函數(shù),我們可以這樣來使用它: dosome(5);

那么,有什么東西可以像這樣工作么?

答案1:重載了 () 操作符的對象,比如:

  1. struct DoSome   
  2. {   
  3. void operator()( int i );   
  4. }   
  5. DoSome dosome;  

這里類(對 C++ 來說,struct 和類是相同的) 重載了 () 操作符,因此它的實例 dosome 可以這樣用 dosome(5); 和上面的函數(shù)調(diào)用一模一樣,不是么?所以 dosome 就是一個C++仿函數(shù)了。

實際上還有答案2:

函數(shù)指針指向的對象。

  1. typedef void( *DoSomePtr )( int );   
  2. typedef void( DoSome )( int );   
  3. DoSomePtr *ptr=&func;   
  4. DoSome& dosome=*ptr;   
  5. dosome(5); // 這里又和函數(shù)調(diào)用一模一樣了。  

當(dāng)然,答案3 成員函數(shù)指針指向的成員函數(shù)就是意料之中的答案了。 #t#

C++仿函數(shù)的用處

不管是對象還是函數(shù)指針等等,它們都是可以被作為參數(shù)傳遞,或者被作為變量保存的。因此我們就可以把一個仿函數(shù)傳遞給一個函數(shù),由這個函數(shù)根據(jù)需要來調(diào)用這個仿函數(shù)(有點類似回調(diào))。

STL 模板庫中,大量使用了這種技巧,來實現(xiàn)庫的“靈活”。 比如: for_each, 它的源代碼大致如下:

  1. template < typename Iterator, typename Functor >   
  2. void for_each( Iterator begin, Iterator end, Fucntor func )   
  3. {   
  4. for( ; begin!=end; begin++ )   
  5. func( *begin );   

這個 for 循環(huán)遍歷了容器中的每一個元素,對每個元素調(diào)用了仿函數(shù) func,這樣就實現(xiàn)了 對“每個元素做同樣的事”這樣一種編程的思想。 特別的,如果仿函數(shù)是一個對象,這個對象是可以有成員變量的,這就讓C++仿函數(shù)有了“狀態(tài)”,從而實現(xiàn)了更高的靈活性。

責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2010-02-05 17:34:37

C++函數(shù)模板

2010-02-04 10:08:00

C++靜態(tài)成員函數(shù)

2010-02-03 13:22:07

C++時間

2010-02-05 12:57:20

C++ kdevelo

2010-02-02 10:33:22

C++引用

2009-08-21 14:47:39

C#網(wǎng)絡(luò)編程

2010-02-02 13:41:01

C++類繼承

2010-02-03 11:11:18

C++類型轉(zhuǎn)換

2010-02-02 15:30:05

C++ include

2010-02-01 17:24:41

C++循環(huán)語句

2010-03-01 18:04:35

WCF配置綁定

2010-02-06 14:04:58

C++內(nèi)存使用機(jī)制

2010-02-04 13:56:24

C++類模板特化

2010-02-01 14:07:12

C++多態(tài)性

2010-02-04 17:39:48

C++字符串類型

2010-02-06 15:58:10

C++集合初始化

2010-02-04 17:32:43

C++中C風(fēng)格字符串

2011-03-28 11:05:17

ODBC

2010-02-04 14:01:43

C++非類型類模板參數(shù)

2010-01-27 17:16:52

C++構(gòu)造函數(shù)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久精品视频亚洲 | 黑人久久久 | 日韩一区在线视频 | 狠狠爱综合| 免费激情网站 | 羞羞视频免费观看 | 欧美福利 | 国产一级在线 | 国产性生活一级片 | 91亚洲精 | 精品日韩在线 | 尤物在线精品视频 | 欧美精品一区二区三区四区 在线 | 精品一二区 | 中文字幕在线一区二区三区 | 亚洲一区二区在线免费观看 | www.国产日本| 国产视频中文字幕 | 嫩草一区二区三区 | 91在线成人 | 中文在线一区二区 | 91视视频在线观看入口直接观看 | 91丨九色丨国产在线 | 夜夜爽99久久国产综合精品女不卡 | 在线资源视频 | 久色一区 | 久在线 | 亚洲欧美一区二区三区国产精品 | a黄视频 | 日韩三级 | 久久五月婷 | 伊人激情综合网 | 久久国产传媒 | 国产一级在线观看 | 日本久久一区二区三区 | 国产免费a | 国产精品久久国产精品99 gif | 日韩高清国产一区在线 | 久久久天堂 | 亚洲成av人影片在线观看 | 91国在线|