이 포스트의 목적

  • 일반화 함수자(함수 객체)가 멤버 함수 포인터도 처리할 수 있게 만든다.

이 포스트의 준비물

  • Firefox 4.0 b7 - 이제 쓸만해 졌다.

참조 서적

  • 안드레 알렉산드레스쿠 저. Modern C++ Design. 이기형 역.
    Addiston-Wesley. 인포북. 초판 2003.07.30. page(205 ~ 218)

내용

이 밖에도, 바인딩, 함수 체이닝(체인화), 성능 개선 이슈가 있다.

  • 바인딩 이슈
    함수자를 만들 때, 함수의 인자 갯수를 미리 설정하는 기술
    또는 함수자를 만들 때, 함수자의 인자 갯수를 줄이는 기술
    link : boost::bind, boost::function

  • 함수 체이닝(체인화) 이슈
    여러 함수들을 순차적으로 호출해 주는 하나의 함수로 만드는 기술
    link : boost::signal, boost::signal2

  • 성능 개선 이슈
    모던에서 정의한 function_object 의 경우, new 를 이용해 구현하고 있어, 복사 비용 문제가 있고, 클래스 포장자가 많아 짐에 따라, 인수 전달시 많은 복사 비용을 물어야 하므로, 성능을 개선시킬 필요가 있다.

    new 가 사용되는 부분은 메모리 풀을 이용하면 되고, 인수 전달은 const & 나 & 로 대체하면 된다.

개인적인 생각

  • 직접 만드는 고통보다는 boost 에서 찾아서 쓰길 권한다. 뭐, 때론 그 고통이 좋은 것일 수도 있으니, 판단은 스스로...

여담

  • 다 정리 해야 하나, 포기! 바인딩 쪽과 함수 체이닝은 개념만 이해하고 넘겨야 겠다.


  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기