¸â¹ö ÇÔ¼ö Æ÷ÀÎÅÍ1

¸â¹ö ÇÔ¼ö Æ÷ÀÎÅ͸¦ ¾îµð »ç¿ë ÇÒ±î?
Ŭ·¡½ºÀÇ °´Ã¼¿Í ÇÔ¼ö Æ÷ÀÎÅ͸¦ ÀúÀåÇÏ¿© ¸í·É¾î Å×À̺íÀ» ¸¸µé·Á°í ÇÑ´Ù.
Functor(ÇÔ¼ö °´Ã¼)·Îµµ °¡´É ÇÒ±î »ý°¢ ÇغÃÁö¸¸, º°´Ù¸¥ ¹æ¹ýÀÌ ¾Èº¸ÀδÙ.
°´Ã¼ Æ÷ÀÎÅÍ¿Í ¸â¹ö ÇÔ¼ö Æ÷ÀÎÅ͸¦ Å×ÀÌºí¿¡ ÀúÀåÇÏ¿© ½ÇÇàÇÏ´Â °ÍÀ» ±¸ÇöÇÏ´Â°Ô ¸ñÇ¥´Ù.

//  ¸â¹ö ÇÔ¼ö Æ÷ÀÎÅÍ

//  http://www.gpgstudy.com/forum/viewtopic.php?t=13618&highlight=%B0%A1%BB%F3%C7%D4%BC%F6

 

 

#include <stdio.h>

#include <tchar.h>

 

struct Base

{

    virtual void Compute( int n )    { printf( "Base: %d\n", n ); }

};

 

struct Derived : public Base

{

    virtual void Compute( int n )    { printf( "Derived: %d\n", n*n ); }

};

 

 

void _tmain(int argc, _TCHAR* argv[])

{

    Derived obj;

    Base* pBase = &obj;

 

    void (Base::*func)( int );

    func = static_cast<void (Base::*)(int) >( &Derived::Compute );

    (obj.*func)( 2 );

    (pBase->*func)( 2 );

}

½ÇÇà µÉ ¸Þ¼Òµå´Â °¡»óÇÔ¼ö·Î ¼±¾ðÇÑ´Ù.

funcÀ¸·Î ¸â¹ö ÇÔ¼ö Æ÷ÀÎÅ͸¦ Á¤ÀÇÇÑ ÈÄ, Compute() ÇÔ¼ö·Î ÃʱâÈ­ ÇÑ´Ù.

funcÀ» °¡»óÇÔ¼ö Æ÷ÀÎÅÍ·Î ÃʱâÈ­ ÇÑ´Ù.

obj °´Ã¼ÀÇ func ÇÔ¼ö¸¦ ½ÇÇàÇÑ´Ù.