강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

지혁김님의 프로필 이미지
지혁김

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

람다 (lambda)

함수 객체 질문

작성

·

294

0

함수 객체라는것이 객체를 생성하고 그걸 () 로 오버로딩 된 함수를 호출 하는것 아닌가요??

auto findit = std::find_if(v.begin(), v.end(), FinditemByItemId(itemid)) 의 finditembyitemid는

그냥 객체를 생성해주는것아닌가요? finditembyitemid(int itemid) 라는 생성자를 통해서요. 디버깅을 해보면 저 저것만으로도 bool operator() 가 실행이 되던데 그게 자동으로 되는것인가요? 그러니깐 즉 finditembyitemdid(itemid) 이것이 조건식으로 부합되는 이유가 궁금합니다. 그저 객체를 생성하는것만 하는것이 아닌.

퀴즈

54%나 틀려요. 한번 도전해보세요!

C++11에서 auto 키워드의 주된 역할은 무엇일까요?

런타임 시 타입 확인

수동 메모리 관리

컴파일 시 자동 타입 추론

동적 배열 생성

답변 2

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

find_if 코드를 보면 _pred(*_UFirst) 부분에서
operator() 를 호출하고 있습니다.
따라서 실제로 인자로 넣어준 predicate도
operator() or 함수 호출 문법을 지원해야 컴파일이 되는 것이죠.

0

find_if의 마지막 인자로 넣어준 FindItemBytId(itemId)녀석은 인자를 하나를 받는 생성자를 호출한게 맞고, find_if자체적으로 마지막인자로 들어온 녀석(FindItemBytId(itemId))의 operator()를 호출하게 설계가 되어있다는 말씀이신가요??

Rookiss님의 프로필 이미지
Rookiss
지식공유자

image네 그렇습니다.

답변 감사합니다!

지혁김님의 프로필 이미지
지혁김

작성한 질문수

질문하기