함수 객체는 생김새가 함수 호출이랑 똑같다. 하지만 함수와는 다르게 내부에 멤버 변수를 가질수가 있어서 객체의 상태 정보를 저장 할 수가 있다. 함수 + 전역변수 라고 생각을 할 수도 있지만, 그러면 1가지 정보밖에 가지고 있을 수가 없다. 함수 객체로 관리하면 여러개의 상태정보가 필요하더라도 다 가능하다.
만드는 방법은 간단하다. () 기호에 대해서 operation overloading을 해주면 끝 !
struct SumObj
{
int m_nSum;
SumObj() : m_nSum(0) {}
int operator() (int i)
{
m_nSum += i;
return m_nSum;
}
};
void main()
{
SumObj S;
int a = S(1); // 1
int b = S(10); // 11
}
|
struct는 모든 멤버가 public인 class로 간주할 수 있다.
댓글 없음:
댓글 쓰기