함수 객체, 템플릿, 콜백함수

jinsuk·2023년 10월 28일
0
  • 함수 포인터 복습

  • 함수 객체를 사용하게 될 경우 논리적으로 일감을 만들어 주는 부분과, 실제로 실행하는 부분이 둘로 분리가 된다는 장점이 있다. -> 커맨드 패턴이라고 불린다.
  • 함수 객체란?
    • 어떤 객체를 만들어서 오퍼레이터 오버로딩을 통해서 함수처럼 동작하는 객체를 뜻한다.

템플릿

  • 함수의 이름이라거나 구현부등 거의 비슷한데 단지 int, float, double등 특정 부분만 다른 함수를 구현해주고 싶을때 일일이 함수를 안만들어도 템플릿 문법(일종의 조커카드)를 사용하면 해결 가능
  • 템플릿 형태로 함수 템플릿을 만들어주게되면 타입에 따라 다양한 버전으로 함수가 만들어진다!
    • 함수의 틀을 만들어준셈이고 컴파일러가 각기 다른 버전을 만들어낸다.
    • 명시적으로 어떤 타입으로 호출하라고 골라주기 전까지는 컴파일러가 최대한 알아서 때려맞춘다.

  • 템플릿? 함수나 클래스를 찍어내는 틀
  • 템플릿 특수화란 무엇인가?
  • 어떤 기사에 대해서는 다른 버전을 따르게 해주고 싶은때 사용, 예외적으로 어떤 특정 타입에 대해서만 다른 규칙을 적용하고 싶을때, 특수한 버전을 만든 셈, 따라서 이름도 템플릿 특수화, 따라서 대부분의 경우는 이경우이지만 특별한 나이트의 경우에만 다른 버전을 따르게 된다.



  • 타입네임 T가 붙었으면 조커카드 즉 어떤 타입인지 모르니까 타입을 골라줘야하는 의미가 있지만 이 의미는 타입네임이 붙지 않았음으로 어떤 랜덤으로 변하는 타입이 아닌 랜덤박스를 만들때 니가 얼마짜리 크기를 몇개 짜리로 할지를 골라줘야한다는 의미임.




콜백함수

  • 함수포인터로 넘겨주게 되면 가장 간단한 형태로 콜백 방식을 구현할 수 있다는 장점이 있지마ㅏㄴ, 상태를 저장할 수 없다는 단점도 존재, 예를 들어 특정 조건을 하나만 체크를 하는 게 아닌 특정 아이템 아이디도 같이 건네 주고 싶다면 이 기능만으로 할 수 없다. -> 함수객체를 이용하자 ! -> 템플릿도 이용(함수 자체를 여러가지 버전을 다 받아줄 수 있게끔 해주는 기능)

profile
공부기록용

0개의 댓글