관리 메뉴
Automotive Software
함수 포인터 (Function Pointer) 본문
- 함수명은 배열명과 같이 해당 개체(함수 또는 배열)의 주소를 가리키는 상수형 포인터
- 함수 호출은 포인터가 가리키는 개체(함수)를 주어진 매개변수와 함께 실행하는 것
- 함수를 가리키는 포인터
- 가리키고자 하는 함수의 반환형과 원형부(매개변수형)가 동일한 포인터 변수
- 동일한 반환형을 가지며
- 동일한 매개변수형을 가진 함수만을 포인팅
- 함수 호출시 함수명 대신 포인터가 사용
- 멤버 함수에 대한 포인터
- 클래스 이름과 범위 연산자(:::)를 함수명 앞에 명시
- 가리키고자 하는 함수의 반환형과 원형부(매개변수형)가 동일한 포인터 변수
class cMyClass
{
public:
void memFunc();
};
bool myFunc1(int data);
bool myFunc2(int data);
bool myFunc3(int data);
int main()
{
int selected;
bool (* pFunc) (int); // pFunc는 bool형의 반환형과 int형의 매개변수를 가지는 함수만을 포인팅
void (cMyClass::*pMemFunc)(); // pMemFunc는 cMyClass의 멤버함수를 가리키는 함수포인터
...
pFunc = myFunc1;
...
// 함수 호출방식은 동일함
myfunc1(1);
pFunc(1);
// 유연성
cin >> selected;
switch(selected)
{
case 1:
{
pFunc = myFunc1;
break;
}
case 2:
{
pFunc = myFunc2;
break;
}
case 3:
{
pFunc = myFunc3;
break;
}
default:
{
pFunc = myFunc1;
}
}
// 단일화된 함수 호출
pFunc(1);
}
- 함수 포인터의 다른 함수로의 전달
void myFunc( int & rP1, int & rP2 );
void callMyFunc( void (*pFunc)(int &, int &), int & rIn1, int & rIn2)
{
pFunc(rIn1, rIn2);
}
- typedef를 이용한 함수 포인터 간략화
// typedef를 이용한 새로운 포인터형 선언
typdef void (*MFP) (int &, int &); // 예, MFP(My function pointer)
void myFunc( int & rP1, int & rP2 );
void callMyFunc( MFP, int & rIn1, int & rIn2);
void callMyFunc( MFP pFunc, int & rIn1, int & rIn2)
{
pFunc(rIn1, rIn2);
}
'프로그래밍 (Programming) > C++ (C Plus Plus) 기초' 카테고리의 다른 글
정적 멤버 변수 및 함수 (Static Member and Function) (0) | 2021.01.11 |
---|---|
다형성 (Polymorphism) (0) | 2021.01.07 |
상속 (Inheritance) (0) | 2021.01.02 |
연산자 중첩 (0) | 2020.12.29 |
객체 초기화 (0) | 2020.12.29 |