본문 바로가기

프로그래밍 언어/C++

펑터(Functor)를 쓰는 이유

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