(C++ : Function-Pointer) 함수 객체

Posted by : at

Category : Cpp


함수처럼 동작하는 객체!

void HelloWorld()
{
    cout << "Hello World" << endl;
}

int main()
{
    void (*pFunc)(void);

    pFunc = &HelloWorld
    (*pFunc)();

    // 함수 포인터 단점.
    // 1. 시그니처가 안맞으면 사용할 수 없음.(매개변수가 안맞으면 사용불가)
    // 2. 상태를 가질 수 없다.(멤버 변수를 가질수 없다.)
}

이런 함수 포인터의 단점을 보완해보자

class Functor
{
public:
    void operator()()
    {
        cout << "Functor Test" << endl;
    }

    bool operator()(int num)
    {
        // 이런식으로 수정도 가능
        return true;
    }

private:
    int _value = 0;
};

int main()
{
    Functor functor;
    functor();

    return 0;
}

Functor의 장점이 있나??

  • 함수의 호출 시점과 실행시점을 분리할 수 있다.
class MoveTask
{
public:
    void operator()()
    {
        cout << "Move!" << endl;
    }

public:
    int _platerId;
    int _posX;
    int _posY;
};

int main()
{
    MoveTask task;
    task._playerId = 100;
    task._posX = 5;

    // 나중에 실행
    task();
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links