C++의 펑터

Muhammad Husnain 2023년10월12일
  1. C++의 펑터 소개
  2. C++에서 매개변수가 있는 펑터
  3. 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 첫 번째 매개변수가 두 번째 매개변수보다 작은지 확인합니다.
Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn