1. Operator - [], (), 변환연산자 (int*)
more..
class Test
{
private:
int array[10];
public:
int& operator [] ( int i)
{
return array[i];
}
void operator () () const
{
Print();
}
Test( void )
{
for ( int i = 0; i < 10; ++i )
array[i] = i;
}
void Print( void ) const
{
for ( int i = 0; i < 10; ++i )
printf( "%d ", array[i] );
printf( "\n" );
}
operator int*()
{
return array;
}
};
void Print( const Test& t )
{
t();
}
void Print( int* array, int size )
{
for( int i = 0; i < size; ++i )
printf( "%d ", array[i] );
printf( "\n" );
}
void main( void )
{
Test test;
//Print( test );
Print( test, 10 );
printf( "\n" );
}
2. 함수포인터 활용 - 멤버함수포인터 써보기
1) 함수포인터 기본.
more..
typedef void(*FUNC)( int );
void Print( int n );
void Listen( int n );
void main( void )
{
void (* FuncPointer[2] )( int ) = { Print, Listen };
FUNC func = Print;
FUNC FuncArray[2] = { Print, Listen };
}
void Print( int n )
{
printf( "Print - %d\n", n );
}
void Listen( int n )
{
printf( "Listen - %d\n", n );
}
2) 클래스의 멤버 함수를 포인터함수로 써보기.
more..
class Test;
typedef void ( Test::*func )(int);
class Test
{
public:
void (Test::*FUNC)( int );
void Print( int n )
{
printf( "Print - %d\n", n );
}
void Proxy( int a )
{
(this->*FUNC)(a);
}
};
void GlobalPrint( int n )
{
printf( "Global %d", n );
}
void main( void )
{
// &를 받은 함수는 *를 호출해야 한다.
// void (* func)(int) = &GlobalPrint;
// (*func)( 99 );
Test test;
func fun = { &Test::Print };
(test.*fun)(6);
// 멤버내의 함수포인터를 호출하는 법
Test t = { &Test::Print };
( t.*(t.FUNC) )(99);
//t.Proxy( 99 );
}
Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다