함수포인터 이용하기
함수포인터에 대한 기초적인 사용 방법은 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()로 나눌수도 있지만
함수가 여러개라면 코드의 양이 길어집니다. 따라서 맨 처음 언급한대로 함수포인터를 적용함으로
코드가 좀더 간결해지고 유연해졌습니다.