• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

함수객체 의 매개변수

23.01.04 00:28 작성 23.01.04 00:39 수정 조회수 236

0

루키스님 안녕하세요. 질문 있습니다!

영상에서 람다식 사용 이전

isuniqueitem 함수 객체를 통해 find if 매개변수로 넣어주셨는데요. Isuniqueitem은 매개변수로ITEM& item이 들어갑니다. 하지만 임시 객체 어떠한 부분에도 item을 넣어준 적이 없는데 어떻게 작동하는걸까요? F12 통해 보려고해도 이해가 잘 되지않아 질문 드립니다.

답변 1

답변을 작성해보세요.

1

임시 객체에 item을 넣어준 적이 없지만, 애당초 넣을 필요가 없습니다.
operator()에 (Item&)이 있는 것이지 생성자에 붙어있는게 아닙니다!
내부적으로 find_if에서는 우리가 넣어준 IsUniqueItem이라는 객체를 대상으로
operator()를 실행하는데 이 때 Item&을 넣어주면서 실행할 것이고,
딱 마침 vector가 Item 타입이니 자연스럽게 실행되는 것이죠.
image위에서 보면 Pr Pred에 IsUniqueItem() 객체가 들어가고,
이것을 이용해서
Pred(*_UFirst)하는 부분에서
operator(Item&) 부분에 실행됩니다.