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

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

작성한 질문수

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

람다 (lambda)

함수 객체 질문

작성

·

196

0

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

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

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

답변 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네 그렇습니다.

답변 감사합니다!

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

작성한 질문수

질문하기