더북(TheBook)

1.8.1 함수 객체

함수 객체(종종 functor, 펑터라고 부른다)*****는 함수 호출 연산자 operator()()를 오버로딩한 클래스의 객체를 말한다. 함수 객체는 원시 함수 포인터를 사용하는 것보다 더 효율적으로 함수를 다른 함수에 인수로 전달하는 방법을 제공한다. 간단한 예제로 확인해보자. Volume 클래스를 다음과 같이 정의했다고 하자.

class Volume
{
public:
  double operator()(double x, double y, double z) { return x*y*z; }
};
 

이렇게 정의하면 Volume 객체를 만들어서 부피를 계산하는 함수처럼 사용할 수 있다.

Volume volume;                          // 펑터(함수 객체)를 생성한다
double room { volume(16, 12, 8.5) };    // 세제곱으로 방의 부피 계산

***** 역주

functor(펑터)는 function operator(함수 연산자)의 합성어다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.