HOWTO · C++

C++의 펑터

C++에서 펑터를 사용하는 방법에 대한 빠른 자습서입니다.

이 페이지의 내용

이 간단한 튜토리얼은 펑터와 C++ 프로그래밍 언어에서의 펑터 사용법을 소개합니다. 먼저, 이 기사에서는 펑터를 간략하게 소개하고 그 구문과 유용성에 대해 설명합니다.

C++의 펑터 소개

Functor는 함수처럼 동작할 수 있는 클래스 객체입니다. C++ STL(Standard Template Library)에서 사용할 수 있는 수많은 펑터가 있으며 직접 만들 수도 있습니다.

펑터의 가장 큰 장점은 함수는 아니지만 클래스 객체이기 때문에 상태를 저장할 수 있다는 것입니다.

펑터는 우리가 간단한 함수를 호출할 때 해당 클래스의 객체를 호출할 수 있도록 모든 클래스에서 연산자 ()를 오버로드하여 만듭니다.

명확한 이해를 위해 아래 예를 살펴보겠습니다.

class Hello {
 public:
  void operator()() { cout << "Hello from Functor" << endl; }
};

이제 이것을 사용하기 위해 Hello 클래스의 객체를 만들고 다음과 같이 호출합니다.

int main() {
  Hello hello;
  hello();
  return 0;
}

출력:

Hello from Functor

연산자와 함께 객체를 사용할 때 함수 호출 연산자 ()가 호출되는 것을 출력에서 ​​볼 수 있습니다.

C++에서 매개변수가 있는 펑터

Functor는 또한 함수와 마찬가지로 일부 매개변수와 반환 유형을 갖는 것으로 정의할 수 있습니다. 매개변수를 포함하도록 이전 펑터를 수정할 수 있습니다.

class Hello {
 public:
  void operator()(string name) {
    cout << "Hello " << name << " from Functor" << endl;
  }
};

이것을 호출하려면 매개변수도 전달해야 합니다.

int main() {
  Hello hello;
  hello("david");
  return 0;
}

출력:

Hello david from Functor

C++의 미리 정의된 펑터

C++ 표준 템플릿 라이브러리에 패키징된 기능적 헤더 파일에는 수많은 펑터가 포함되어 있습니다. 그들 중 일부는 여기에서 논의됩니다.

펑터 이름 설명
plus 매개변수로 전달된 두 숫자의 합을 계산합니다.
minus 매개변수로 전달된 두 숫자의 차이를 계산합니다.
multiplies 매개변수로 전달된 두 숫자의 곱을 계산합니다.
divides 매개변수로 전달된 두 숫자의 나눗셈 결과를 계산합니다.
equal_to 전달된 두 매개변수가 동일한지 여부를 확인합니다.
not_equal_to 전달된 두 매개변수가 같지 않은지 확인합니다.
greater 첫 번째 매개변수가 두 번째 매개변수보다 큰지 확인합니다.
less 첫 번째 매개변수가 두 번째 매개변수보다 작은지 확인합니다.