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

C++仿函數基本概念淺析

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

C++編程語言為我們帶來了非常大的好處。不過即使是我們經常使用的功能也有很多比較高深的內容值得我們去深入的探討。在這里我們將會為大家詳細介紹一下C++仿函數的基本概念,方便大家對這一語言的解讀。

C++仿函數這個詞經常會出現在模板庫里(比如 STL),那么什么是仿函數呢?

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

  1. void dosome( int i )  

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

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

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

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

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

實際上還有答案2:

函數指針指向的對象。

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

當然,答案3 成員函數指針指向的成員函數就是意料之中的答案了。 #t#

C++仿函數的用處

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

STL 模板庫中,大量使用了這種技巧,來實現庫的“靈活”。 比如: 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 循環遍歷了容器中的每一個元素,對每個元素調用了仿函數 func,這樣就實現了 對“每個元素做同樣的事”這樣一種編程的思想。 特別的,如果仿函數是一個對象,這個對象是可以有成員變量的,這就讓C++仿函數有了“狀態”,從而實現了更高的靈活性。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-02-05 17:34:37

C++函數模板

2010-02-04 10:08:00

C++靜態成員函數

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#網絡編程

2010-02-02 13:41:01

C++類繼承

2010-02-03 11:11:18

C++類型轉換

2010-02-02 15:30:05

C++ include

2010-02-01 17:24:41

C++循環語句

2010-03-01 18:04:35

WCF配置綁定

2010-02-06 14:04:58

C++內存使用機制

2010-02-04 13:56:24

C++類模板特化

2010-02-01 14:07:12

C++多態性

2010-02-04 17:39:48

C++字符串類型

2010-02-06 15:58:10

C++集合初始化

2010-02-04 17:32:43

C++中C風格字符串

2011-03-28 11:05:17

ODBC

2010-02-04 14:01:43

C++非類型類模板參數

2010-01-27 17:16:52

C++構造函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人免费视频网站高清观看视频 | 国产欧美综合在线 | 亚洲天堂成人在线视频 | 亚洲麻豆| 国产精品不卡 | 国产精品嫩草影院精东 | 高清人人天天夜夜曰狠狠狠狠 | 国产精品久久久久久 | 亚洲精品久久久久久久久久久久久 | 成人在线视频看看 | 成人激情视频在线播放 | 欧美中文一区 | 亚洲有码转帖 | 99国产精品久久久久久久 | 91黄色片免费看 | 国产精品有限公司 | 日日碰狠狠躁久久躁96avv | 国产成人精品免费视频大全最热 | 精品日韩欧美一区二区 | 99久久婷婷国产综合精品电影 | av黄色片在线观看 | www.久久.com| 欧美成人h版在线观看 | 久久免费小视频 | 九九九久久国产免费 | 亚洲97| 国产精品日日夜夜 | 99热精品在线| 国产色播av在线 | 国产永久免费 | 国产精品视频在线播放 | 中文字幕国产精品 | 亚洲国产成人精品一区二区 | 久久草视频 | 狠狠综合久久av一区二区老牛 | 日本成人片在线观看 | 一区二区精品视频 | 性色网站| 中文字幕日韩在线观看 | 日韩在线 | 色综网|