C 11新特性學習筆記(二)

2021-07-11 18:51:00 字數 1514 閱讀 8605

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是按引用傳遞,表示可以訪問所有外部變數,並且是用按值傳遞方式,類似,也...