본문 바로가기

c,c++

함수포인터 / 함수 객체 / 람다 간단 정리

* 함수 포인터
- 함수 시작 위치를 저장하는 포인터 변수

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

'c,c++' 카테고리의 다른 글

printf vs puts  (0) 2021.07.11
Implicit declaration of function  (0) 2021.07.11