C 匿名函式

2021-09-27 07:18:31 字數 751 閱讀 1600

所謂匿名函式,其實類似於python中的lambda函式,其實就是沒有名字的函式。使用匿名函式,可以免去函式的宣告和定義。這樣匿名函式僅在呼叫函式的時候才會建立函式物件,而呼叫結束後立即釋放,所以匿名函式比非匿名函式更節省空間

c++中的匿名函式通常為[capture](parameters)->return-type,當parameters為空的時候,()可以被省去,當body只有「return」或者返回為void,那麼」->return-type「可以被省去,下面將將對其中的引數一一解釋

//未定義變數.試圖在lambda內使用任何外部變數都是錯誤的.

[x, &y]   //x 按值捕獲, y 按引用捕獲.

[&]       //用到的任何外部變數都隱式按引用捕獲

[=]       //用到的任何外部變數都隱式按值捕獲

[&, x]    //x顯式地按值捕獲. 其它變數按引用捕獲

[=, &z]   //z按引用捕獲. 其它變數按值捕獲

#includevoid main()

);}

#includetemplate int collectfeatures(callback cb)

} return count;

}bool addfeature(size_t feature)

void main()

); std::cout << i << std::endl;

}

C 匿名函式

匿名函式是乙個 內聯 語句或表示式,可在需要委託型別的任何地方使用。可以使用匿名函式來初始化命名委託,或傳遞命名委託 而不是命名委託型別 作為方法引數。c 中委託的發展 在 c 1.0 中,您通過使用在 中其他位置定義的方法顯式初始化委託來建立委託的例項。c 2.0 引入了匿名方法的概念,作為一種編...

C 匿名函式

c 中委託的演變 c 1 中,通過使用在 中其他位置定義的方法顯式初始化委託來建立委託的例項 c 2中,引入了匿名方法的概念,作為一種編寫可在委託呼叫中執行的未命名內聯句塊的方式 c 3 中,引入了lambda 表示式,這種表示式和匿名方法類似,但更具表達力 更簡單。匿名方法 和lambda表示式 ...

C 匿名函式

1.1乙個簡單的示例 includeusing namespace std int main int num fun 10 呼叫 cout num endl 測試返回值 return 0 1.2基礎示例 include std sort include std string include std ...