c++11引入了lambda(匿名函式),這樣就可以在乙個函式只需呼叫一次的地方使用了,類似內聯函式。
c++11 的 lambda 表示式規範如下:
[
capture]
(
params)
mutable
exception
attribute->
ret
(1)[
capture]
(
params)
->
ret
(2)[
capture]
(
params)
(3)[
capture]
(4)其中
省略了引數列表,類似於無參函式 f()。
mutable修飾符說明 lambda 表示式體內的**可以修改**獲的變數,並且可以訪問**獲物件的 non-const 方法。
exception說明 lambda 表示式是否丟擲異常(noexcept
),以及丟擲何種異常,類似於void f(
)throw
(x, y)。
attribute用來宣告屬性。
另外,capture指定了在可見域範圍內 lambda 表示式的**內可見得外部變數的列表,具體解釋如下:
此外,params指定 lambda 表示式的引數。
舉個例子:
#include using namespace std;
int main()
private:
int id; //copy of outside id
};
注意前面的函式e相當於將id設為const物件,因此不能更改id值,或者相當於operator()被定義為乙個const成員函式。
c 11 新特性 (二)
1.nullptr 專門形容指標為空 2.強類列舉 enum direction enum answer 3靜態斷言,可在編譯時作判斷 static assert size of int 4 4.建構函式的相互呼叫 delegating constructor class a a int x,int...
C 11新特性 二
目錄 default,delete 配合建構函式和拷貝賦值 一起使用 alias template template typedef type alias別名 using noexcept override final decltype lambda 右值引用 對於乙個空的class c 編譯器處理...
C 11新特性學習
lambda表示式用於建立匿名的函式物件,語法為 函式可訪問的的外部變數 函式引數 返回值型別 如 int a 1,b 2 int c b int x int b 表示函式中可以訪問外部變數b,而且引數b是按值傳遞,b 表示引數b是按引用傳遞,表示可以訪問所有外部變數,並且是用按值傳遞方式,類似,也...