[디딤돌 C++] 52. 함수 개체

학생) 함수 호출 연산자를 중복 정의한 형식의 개체를 함수 개체라 불러요. 마치 함수처럼 사용할 수 있죠.

이번에는 함수 호출 연산자 중복 정의와 함수 개체를 알아보기로 해요.

C++언어에서는 함수 호출 연산자를 중복정의 할 수 있습니다. 함수 호출 연산자의 연산 기호는 ( ) 입니다. 따라서 함수 호출 연산자를 중복 정의할 때 메서드 이름은 operator()입니다. 메서드 뒤에 입력 매개 변수 리스트를 열거하는 ()에는 개발자가 개수와 형식을 결정하고 반환 형식도 개발자가 정합니다.

[반환형식] operator() ([입력 매개 변수 리스트]);

그리고 함수 호출 연산자를 중복 정의한 형식의 개체를 함수 개체라고 부릅니다. 함수 개체는 형식 내부에 함수 호출 연산자를 중복 정의하고 있어서 마치 함수처럼 호출하여 사용할 수 있습니다.

먼저 간단하게 함수 호출 연산자 중복 정의를 사용하여 함수 개체를 함수처럼 사용하는 예를 보여드를게요.

▷ 실행 결과

테스트

12

 

보통 함수 개체는 메서드를 구현하는 곳에서 모든 알고리즘을 정의하지 못하고 일부를 호출하는 곳에서 정의한 알고리즘을 이용할 때 사용합니다. 예를 들어 회원을 보관하는 배열을 구현하면서 검색 기능을 구현할 때 호출하는 곳에서 검색 기능을 구현한 함수 개체를 입력 인자로 받아 이를 이용하는 것이죠. 또한 배열에 보관한 회원 정보를 출력하는 알고리즘을 호출하는 곳에서 함수 개체로 전달받아 이를 이용하여 출력하게 할 수도 있겠죠. 마찬가지로 배열에 보관한 회원 정보를 정렬할 때 비교 알고리즘을 함수 개체를 입력 인자로 전달받아 이용할 수도 있을 거예요.

다음처럼 배열에서는 함수 호출 연산자를 중복 정의한 알고리즘을 추상화합니다.

그리고 배열의 검색 기능에서는 함수 개체를 입력 인자로 받아 조건에 맞는 것을 구현하죠.

사용하는 곳에서는 검색에 필요한 알고리즘을 구체적으로 구현합니다.

그리고 배열의 검색 요청 시에 구체적으로 구현한 함수 개체를 입력 인자로 전달하여 원하는 것을 찾습니다.

다음은 함수 개체를 이용하여 회원 컬렉션을 정의하고 이를 이용하는 예제 코드입니다.

▷ 실행 결과

번호:3 이름:홍길동

전체 출력1

번호:5 이름:이순신

번호:3 이름:홍길동

번호:1 이름:강감찬

전체 출력2

이름:이순신 번호:5

이름:홍길동 번호:3

이름:강감찬 번호:1

번호로 정렬 후 출력

번호:1 이름:강감찬

번호:3 이름:홍길동

번호:5 이름:이순신

이름으로 정렬 후 출력

이름:강감찬 번호:1

이름:이순신 번호:5

이름:홍길동 번호:3


[C++ 무료 동영상 강의] 52. 함수 개체

학습에 도움이 되시면 ebook을 구입(판매가 5000원, ebook)하여 소장하시면 감사하겠습니다.