c,c++
함수포인터 / 함수 객체 / 람다 간단 정리
굽굿
2021. 9. 27. 00:06
* 함수 포인터
- 함수 시작 위치를 저장하는 포인터 변수
int (*fp)(int, char)
/*
반환형 int, parameter로 int, char을 가지는 함수 주소를 가리킬 수 있는 함수 포인터 선언
*/
//typedef로 자료형 등록 가능
typedef int(*FP)(int, char);
//함수 포인터 등록
int A(int a, char b){ /*something*/ }
int B(int a, char b){ /*something*/ }
int (*fp)(int, char)
fp = A;
fp = B;
- callback / 확장성을 위해 사용된다.
- inline 사용 불가
* 함수 객체
- operator ()를 오버라이딩하여 사용
class A(){
public:
int operator() (){ /*something*/ }
int operator() (int a){ /*something*/ }
int operator() (int a, char b){ /*something*/ }
}
A a(); //선언 및 할당
a() //함수객체 사용, operator()() 실행
- inline화 가능 (STL에서 사용, sort, priority queue 등)
- 함수포인터에 비해 선언이 김
* Lambda
(추후 정리)
참고
https://hwan-shell.tistory.com/87
https://hwan-shell.tistory.com/86