람다표현식

  • 익명 함수 개체를 정의하는 방법을 말한다.
  • 익명함수를 그 자리에서 인라이닝 할 수 있게 해준다.
  • 이 기능을 사용하면 함수나 함수 객체를 별도로 작성하지 않아도 되기 떄문에 코드가 간결해짐.

문법

  • 람다 표현식은 [] 와 표현식 본체 {} 블록으로 이루어진다
    //lamda = []-> 반환타입 {본체};
    //auto lamda = [(캡쳐영역)] {캡쳐영역 한걸 사용 가능 };
    //[캡쳐블록](파라미터목록) mutable 익센셥_목록 속성_지정 -> 리턴_타입 {함수_바디}
    
    //1.캡쳐블록 : 람다 함수 안에서 참조할 바깥 변수들을 지정한다. 여기에서 지정한 변수들은 람다 함수의 스코프 안으로 들어와서 함수바디에 접근 할 수 있게 된다.
    //2.파라미터목록(생략가능) : 표현식에서 넘겨받을 파라미터 목록을 정의한다. 생략을 하려면, 뮤터블, 익센선, 리턴 타입을 지정하지 않아야 한다.
    //3.mutable 키워드 (생략가능) : 람다 함수의 불변 속성을 지워서 캡처받은 변수르르 수정할 수 있게 한다.
    //4.익센셥 목록(생략가능)  : 람다 표현식의 바디 본체 안에서 던질 수 있는 익셉션의 종류를 지정한다
    //5.속성 지정(생략 가능) : 람다표현식의 속성을 지정한다.
    //6.리턴 타입(생략된다) : 생략하면 일반 함수의 리턴 타입 추론된다

    //[=] 모든 변수를 값으로 캡쳐한다
    //[&] 모든 변수를 참조로 켭채한다.

 

    auto basiclamda = [] {std::cout << "Hello" << std::endl; };

    auto parameterlamda = [](int ivalue) {std::cout << ivalue << std::endl; };
    parameterlamda(77);

    auto returnlamda = [](int a, int b) -> int {return a + b; };
    returnlamda(6, 4);

    //리턴 타입 생략 가능
    auto returnlamda2 = [](int a, int b) {return a + b; }; 
    returnlamda2(6, 4);

 

'프로그래밍 > C++' 카테고리의 다른 글

CAST 종류 + RTTI  (0) 2019.04.30
virtual 순수가상함수 + 가상함수테이블  (0) 2019.04.30
함수 객체  (0) 2019.04.29
이동 시멘틱  (0) 2019.04.29
함수 포인터  (0) 2019.04.29

+ Recent posts