Post List

2015년 1월 14일 수요일

Function Object

Function Object
함수 객체는 생김새가 함수 호출이랑 똑같다. 하지만 함수와는 다르게 내부에 멤버 변수를 가질수가 있어서 객체의 상태 정보를 저장 할 수가 있다. 함수 + 전역변수 라고 생각을 할 수도 있지만, 그러면 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로 간주할 수 있다.

댓글 없음:

댓글 쓰기