티스토리 뷰
함수포인터에 대한 기초적인 사용 방법은 https://www.joinc.co.kr/w/Site/C/Documents/FunctionPointer 에서 참고바랍니다.
함수포인터의 사용의의라 하면 유연하게 코딩을 할 수 있다는데 있겠습니다. 또 코드의 양을 줄일수도 있습니다.
거두절미 하고 코드로 먼저 확인하겠습니다.
헤더파일에 typedef로 정의된 함수포인터는 두가지가 있습니다.
ElementComprator
ReturnValueComprator
typedef로 정의해서 간략하게 함수포인터를 이용할 수 있습니다.
그렇지 않으면 일일이 함수의 헤더를 그대로 적어야겠죠.
ElementComprator는 사용자정의 comp함수입니다.
클래스의 객체를 만들어 낼 때 매개변수로 넘길 수 있는데
이 함수포인터는 ReturnValueComprator(std::max혹은 min)의 comp매개변수로 다시 넘겨집니다.
또 ReturnValueComprator는 template과도 연계해서 정의해서 연계되어있습니다.
따라서 클래스안에 정의하였습니다.
헤더파일을 정의한 hpp파일의 9번 라인을 보면 함수포인터가 어떻게 적용되는지 확인할 수 있습니다.
사용자가 호출한 생성자에 매개변수에 따라 std::min<int>일지 max일지 정의되어 있고
init함수의 반환값에 그대로 적용되고 있습니다.
init함수 하나만이라면야 굳이 함수포인터를 이용하지 않고 if isMinimum==true: min() else max()로 나눌수도 있지만
함수가 여러개라면 코드의 양이 길어집니다. 따라서 맨 처음 언급한대로 함수포인터를 적용함으로
코드가 좀더 간결해지고 유연해졌습니다.
'프로그래밍 > C C++' 카테고리의 다른 글
effective stl item2 : Beware the illusion of container-independent code (0) | 2017.11.12 |
---|---|
effective stl item1 (choose your containers with care) (0) | 2017.11.09 |
깊은복사 예제 (0) | 2017.05.18 |
c++11 aliases와 template 그리고 header file (0) | 2017.02.27 |
Pointer Decay in C++ (배열의 포인터로의 붕괴) (2) | 2017.01.22 |
- Total
- Today
- Yesterday
- 카카오 공채
- 문자열
- peram jam
- printf
- regex
- 드럼
- Pointer
- yiruma
- 이루마
- python
- linux
- C language
- Algorithm
- Codejam
- 사천
- 중국여행
- 악보
- 코드잼
- 알고리즘
- link
- 여행
- C++
- 중국
- compile
- Spring
- STL
- 피아노
- kernerl
- 정규표현식
- cpp
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |