函式指標是c語言中算是比較困難的內容之一,c語言實現的高階功能很多都離不開函式指標構成的列表。進入c++之後首先是引入了函式物件,接著c++11又引入了lamda表示式和引數繫結。
上述4種技術有乙個共同的特徵,即都可以對其使用呼叫運算子,c++稱之為可呼叫物件。可呼叫物件雖然有著共同的呼叫模式,但是卻分別屬於完全不同的型別。如果需要組織乙個可呼叫物件的列表(或其他資料結構),就需要一種共通的觀點--function類模版。
可執行物件
假設我們有以下的四則運算操作,分別以函式,lamda表示式,函式物件和引數繫結的方式實現:
function類模版
**首先是function定義了返回值為int,引數為兩個int的可呼叫物件型別,然後定義了從string到該型別的對映。
接下來就是初始化對映和使用映**。
在本例中可以看到:雖然每個操作的型別並不相同,但是由於它們擁有相同的呼叫形式,通過引入function類模版,可以像同一種型別一樣使用它們。
作者觀點
這可算是c++中模版的強大實力的牛刀小試吧。
C 11新特性學習
lambda表示式用於建立匿名的函式物件,語法為 函式可訪問的的外部變數 函式引數 返回值型別 如 int a 1,b 2 int c b int x int b 表示函式中可以訪問外部變數b,而且引數b是按值傳遞,b 表示引數b是按引用傳遞,表示可以訪問所有外部變數,並且是用按值傳遞方式,類似,也...
C 11 新特性試用
在c 11之前,auto關鍵字用來指定儲存期。在新標準中,它的功能變為型別推斷。auto現在成了乙個型別的佔位符,通知編譯器去根據初始化 推斷所宣告變數的真實型別。各種作用域內宣告變數都可以用到它。例如,名空間中,程式塊中,或是for迴圈的初始化語句中。auto i 42 i is an int a...
C 11 新特性總結
vs2012以上版本支援 一.auto的使用 auto func less 自動表示函式指標 auto ite vector a.begin 自動表示stl的迭代器 auto p new foo 自動表示變數指標等變數 二.decltype int x 3 decltype x y x 從變數或表示...