[STL]함수 포인터 - 정적 함수 호출

정적 함수 호출
함수 시그니처(반환과 매개변수 일치)를 맞춰주기만 하면 쉽게 선언 할 수 있다.

 

코드
#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