1. 程式人生 > >C++ lambda表示式一個非常簡單的例子

C++ lambda表示式一個非常簡單的例子

如果我想要定義一個指向int為返回值,兩個int為引數的函式的指標,有兩種方法

1: 先宣告一個函式

int func(int, int);

然後使用decltype推斷這個func的型別作為新定義的型別的型別

typedef decltype(func) * Func1;

2: 直接使用typedef宣告

typedef int(*func)(int, int);

注意中間是我要的型別名稱,右邊帶有括號,表明是一個函式指標,指向(左邊)int的返回值,接收兩個int作為輸入的函式。

然後,假設現在有這麼一個函式

int Func2(int a, int b, Func1 c)
{
       return c(a,b);
}

他呼叫Func1這種型別的一個引數(函式指標),然後傳入的a, b 作為引數傳遞給c作為c的引數,

但是現在c只有宣告,沒有實現。如果我想在呼叫這個Func2的時候定義Func1的真正表現,怎麼辦?

void main(int argc, char** args)
{
    std::cout<<Func2(3,4,[](int a, int b){return a+b;})<<std::endl;

}

這個就是lambda表示式了,它接收兩個int 作為引數,且返回的是int型別的變數,符合我們前面定義的Func2接收的第三個引數的型別。

結果會返回7.