함수 객체는 상태를 가진 객체를 함수처럼 호출하게 만든다
operator()를 정의하면 객체가 알고리즘의 조건자나 변환 함수로 들어갈 수 있습니다. 멤버 변수는 호출 사이에 유지되는 상태입니다.
정의
class AddAndPrint {
int value;
public:
AddAndPrint(int v) : value(v) {}
void operator()(int n) const {
cout << n + value;
}
};
| 요소 | 역할 | 예시 |
|---|---|---|
| 상태 | 객체가 기억하는 값 | value = 10 |
| 호출 | 함수처럼 실행되는 연산자 | obj(3) |
| 전달 | 알고리즘에 동작을 주입 | for_each(..., AddAndPrint(10)) |
| 효과 | 같은 로직, 다른 상태 재사용 | 10 더하기 / 100 더하기 |
일반 함수와 달리 함수 객체는 “행동 + 상태”를 하나의 타입으로 알고리즘에 넘길 수 있습니다.