정적 함수 호출
함수 시그니처(반환과 매개변수 일치)를 맞춰주기만 하면 쉽게 선언 할 수 있다.
코드
#include <iostream>
using namespace std;
void Print(int n) {
cout << "전역 함수 : " << n << endl;
}
namespace A
{
void Print(int n) {
cout << "namespace A 전역 함수: " << n << endl;
}
}
class Point {
public:
static void Print(int n) {
cout << "Point 클래스의 정적 멤버 함수: " << n << endl;
}
};
int main() {
void(*pf)(int); //정적 함수 포인터 선언 Print의 시그니처와 동일하게 설정
//시그니처: 함수의 반환형과 매개변수형 갯수를 동일하게
Print(10); //전역함수 호출
A::Print(10); //namespace A의 전역함수
Point::Print(10); //Point 클래스의 정적 멤버 함수
cout << endl;
pf = Print; //pf에 Print함수의 주소할당
pf(10); //함수 포인터로 namespace 없는 전역함수 호출
pf = A::Print;
pf(10); //namespace A의 전역함수 호출
pf = Point::Print;
pf(10); //Point클래스의 정적 멤버함수 호출
return 0;
}
Main 외에 있는 코드들에 보이는 함수들은 반환이 void이고 매개변수를 int형 하나를 받고있기에
함수 포인터의 시그니처를 이와 같이 맞춰줘야 합니다.
그렇기에 void (*pf) (int)로 똑같이 맞춰줍니다.
결과
'C++ > STL' 카테고리의 다른 글
[STL] 함수 포인터 - 콜백 함수 (0) | 2025.02.15 |
---|---|
[STL] 함수포인터 - 멤버 함수 호출 (0) | 2025.02.15 |
[STL] 함수 포인터의 종류 (0) | 2025.02.15 |
[STL] 함수 포인터 선언과 사용 (0) | 2025.02.15 |
[STL] 1장 문제풀이 (0) | 2025.02.15 |