강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của rlawlgur4327673
rlawlgur4327673

câu hỏi đã được viết

[Loạt bài phát triển game MMORPG bằng C++ và Unreal] Phần 1: Nhập môn lập trình C++

lambda

함수 객체 질문

Viết

·

278

0

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

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

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

C++

Câu trả lời 2

1

Rookiss님의 프로필 이미지
Rookiss
Người chia sẻ kiến thức

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

0

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

Rookiss님의 프로필 이미지
Rookiss
Người chia sẻ kiến thức

image네 그렇습니다.

답변 감사합니다!

Hình ảnh hồ sơ của rlawlgur4327673
rlawlgur4327673

câu hỏi đã được viết

Đặt câu hỏi