본문 바로가기

PL/C & C++

[C++] 함수 객체

 

 

 

위 예제에서 주목하셔야 할 부분은 함수 호출 연산자가 오버로딩 되었다는것도 있지만, 메인 함수 내에 Equal 객체로 어떻게 함수가 호출되고 있는지에 대해 보셔야 합니다. 첫번째 호출인 'cmp(5, 5)'는 우리가 첫 예제에서 보아왔던 코드로, 암묵적 호출이라고 합니다. 여기서 암묵적 호출은 밖으로 드러내지 않는 호출이라고 할 수 있으며, 그 아래에 있는 두번째 호출 'cmp.operator()(10, 20)'은 명시적 호출이라고 할 수 있습니다. 분명하게 드러내는 호출이라고 할 수 있는거죠. 그리고 세번째 호출인 'Equal()(10, 20)'은 임시 객체를 통한 암묵적 호출이라고 할 수 있습니다.

 

여기서 드는 의문점은, 왜 굳이 함수 호출 연산자를 오버로딩하여 객체를 가지고 함수처럼 사용할까요? 우리가 사용하고 있는 함수와는 달리 함수 객체를 사용하면 속성을 지닐 수 있는것이 가능하고, 함수 객체가 일반적인 함수보다 빠르기도 하며, 각각의 함수객체는 서로 다른 타입을 지닌다는 장점이 존재합니다. 아래의 예제는 함수 객체의 속성을 통해 값을 누적시켜, 총합을 출력하는 예제입니다.

 

함수 객체에 정수형 데이터를 넘겨주면 그 값을 받아 누적시키고 반환하게 되며, 동작을 포현할 수 있으나 상태를 저장할 수 없는 일반 함수와는 상당히 비교가 되죠? 함수 객체를 사용하면 일반 함수보다 더 폭넓게, 유연하게 사용할 수 있습니다. 오늘은 함수 객체에 대해서 여기까지 살펴보도록 하겠고, 읽어주신 분들 모두 수고하셨습니다.


 

C++/STL 강좌 2편. 함수 객체(Function Object)

1. 함수 객체(Function Object) 이번에는 함수 객체(Function Object)에 대해 알아보도록 하겠습니다. 함수 포인터에 이어 함수 객체는 어떠한 기능일까요? 쉽게 말하자면, 함수 객체는 객체가 함수처럼 동

blog.hexabrain.net

 

'PL > C & C++' 카테고리의 다른 글

[C++] 소멸자(destructor)  (0) 2021.01.27
[C++] 생성자 콜론(:)  (0) 2021.01.26
[C++] 참조 사이트  (0) 2021.01.20
[C & C++] macro function, inline function  (0) 2021.01.20
[C] 연결 리스트 구조체 만들고 사용하기  (0) 2021.01.14