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 |
첫 번째 매개변수가 두 번째 매개변수보다 작은지 확인합니다. |