1. c style...............................................................................................................
c 형태의 전역함수
void func(int a); // 함수원형
void (*pCall)(int); // 함수포인터
◎ note;
리턴값 void, 인자 int 한개를 가지는 함수의 주소를 담는 변수를 pCall로 선언한다.
◎ 값넣기;
pCall = func;
pCall = &func;
두가지 모두 가능하나 2번째로 사용하는게 편리.
첫번째는 함수의 호출과 혼돈할 여지가 있음.
◎ 호출;
pCall(1);
(*pCall)(1);
두가지 모두 가능.
2. c++ style...........................................................................................................
c++ 의 클래스 함수
class CTest
{
void func(int a); // 함수 원형
void (CTest::*pCall)(int); // 클래스 멤버 함수 포인터
}
◎ note;
void (*pCall)(int); 만으로 선언하게 되면, 일반 전역함수의 포인터가 되므로 주의할것.
클래스내의 멤버함수의 주소를 가질수 있는 포인터함수는 해당 클래스의 스코프를 명기해 주어야 함.
◎ 값넣기;
pCall = &CTest::func;
pCall = CTest::func; // vc2005 에서 에러. 함수 호출로 생각해 인자를 넣으라는 에러를 발생시킴.
◎ 호출;
(this->*pCall)(1);
호출방법상 차이가 발생하니 주의할것. this-> 연산자를 지정해야함.
지정이 없는 경우 일반 전역 함수 포인터와 동일해 지므로 정확한 형식을 찾지 못해 에러를 냄.
해당 클래스 스코프내의 함수 포인터임을 인지시킴.
끝.
'프로그래밍 > C,C++' 카테고리의 다른 글
[C#] 파일 읽고,쓰기 기초 (0) | 2013.09.12 |
---|---|
[C#] 이미지 처리 기본 사항들 (0) | 2013.09.12 |
[C#] 이벤트 (0) | 2013.09.12 |
[C#] 폼 띄우기 (0) | 2013.09.12 |
GCC 옵션 (0) | 2011.07.21 |
POSIX 쓰레드 함수들 (0) | 2010.04.16 |
[Linux] 세마포어 설정 (0) | 2010.04.15 |
[Linux] 라이브러리 (0) | 2010.01.28 |
바이트오더~ 비트 스트림~ (0) | 2009.06.04 |
delete obj, delete [] obj 차이 (0) | 2009.06.04 |