1. Separation of concerns
기능을 나눌 수 있다. 예를 들어 반복하는 함수와 그에 대한 인자로 계산을 하는 펑터를 전달 인자로 주면
반복 기능을 하는 코드를 여러 번 적지 않고 간단하게 재사용할 수 있다.
이 외에도 기능을 나누는 수많은 상황에 적용 가능하다. (STL algorithm을 생각해보라는데 공부하고 추가함)
2. Parameterisation
객체를 매개변수로 쉽게 사용할 수 있다.
3. statefulness
펑터는 상태를 유지할 수 있다. 이 상태는 class의 인스턴스(객체)에 의해 유지되므로 Thread Safe를 지킬 수 있다.
4. Performance
펑터는 컴파일러에 의해 종종 인라인화 되기 때문에 성능 향상을 이끌어 낼 수 있다.
정리
펑터가 함수보다 객체지향언어에 더 알맞아서 사용한다.
객체를 따로 포인터를 사용해서 참조하기보다 바로 사용할 수 있다는점이 장점이고 라이브러리에서 가져올때 따로 함수를 구현하지 않고 사용할 수 있다는게 큰 장점이다.
출처:
https://stackoverflow.com/questions/6451866/why-use-functors-over-functions
Why use functors over functions?
Compare double average = CalculateAverage(values.begin(), values.end()); with double average = std::for_each(values.begin(), values.end(), CalculateAverage()); What are the benefits of using a
stackoverflow.com
https://www.ics.uci.edu/~dock/manuals/oechem/cplusprog/node174.html
22.3 Functors have State
www.ics.uci.edu
https://gompangs.tistory.com/entry/OS-Thread-Safe%EB%9E%80
[OS] Thread Safe란?
Thead Safe 스레드 안전(thread 安全, 영어: thread safety)은 멀티 스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로부터 동시에 접근이 이루어져도 프로그램의 실행에
gompangs.tistory.com
'프로그래밍 언어 > C++' 카테고리의 다른 글
파일 입출력 Binary (0) | 2022.03.15 |
---|---|
파일 출력 스트림 (0) | 2022.03.11 |
파일 입력 스트림 (0) | 2022.03.10 |
파일 입출력 (0) | 2022.03.10 |
String 클래스 (0) | 2022.03.09 |