함수 객체는 함수처럼 동작하는 객체이다. 함수처럼 동작하려면 ()연산자를 정의 해야한다, 즉 () 연산자를 오버로딩한 객체다. 예제를 보는게 이해하기 빠를 것 같다.
#include <iostream>
using namespace std;
void Print()
{
cout << "전역 함수!" << endl;
}
struct Functor {
void operator()()
{
cout << "함수 객체!" << endl;
}
};
int main()
{
Functor functor;
Print();
functor();
return 0;
}
굳이 함수 객체를 쓰는 이유는 컴파일러가 쉽게 최적화 될 수 있고 속도가 빨라진다고 한다. 근데 굳이... 왜쓰는지 아직은 잘모르겠긴하다...