반응형
연산자 재정의 활용
함수 객체( Function Object )
- 정의
- () 연산자를 재정의해서 함수처럼 사용 가능한 객체
- "Function Object" 또는 "Functor" 라고도 부른다.
- 장점
- 특정 상황(다른 함수의 인자로 전달 될 때)에서는 일반 함수보다 빠르다(인라인 치환)
- 상태를 가지는 함수( 멤버 데이터가 있고, 멤버 함수를 활용 가능)
struct Plus
{
int operator()(int a, int b)
{
return a + b;
}
};
int main()
{
Plus p;
int n = p(1, 2); // 함수 처럼 사용
std::cout << n << std::endl; // p.operator()(1,2)
}
///////////////////////////////////////////////////////
// 모든 데이터 타입 지원을 위한 템플릿 적용 버전
template<typename T>
struct Plus
{
T operator()(T a, T b)
{
return a + b;
}
};
int main()
{
Plus<int> p;
int n = p(1, 2); // 함수 처럼 사용
std::cout << n << std::endl; // p.operator()(1,2)
}
C++ 표준 함수 객체
- <functional> 헤더
- 이미 plus, minus, module, less, greater 등 다양하게 제공
- C++ 레퍼런스 사이트 참고(http://www.cppreference.com)
#include <iostream>
#include <functional>
int main()
{
std::plus<int> p;
int n = p(1, 2); // 함수 처럼 사용
}
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 스마트 포인터(Smart Pointer) (0) | 2019.05.10 |
---|---|
C++ 증감 연산자(++, --) (0) | 2019.05.10 |
C++ 연산자 재정의 - cout, endl 원리 (2) | 2019.05.08 |
C++ 연산자 재정의 - 기본 개념 (0) | 2019.05.08 |
C++ static, const, this (0) | 2019.05.07 |