[C++] 함수 객체

spring·2020년 11월 9일
0

C++C 의 95%를 포함하고있다.

그러나 그 대체본이 거의다 존재한다.

C++ 을 사용한다면 성능 문제를 제외하고, C++을 사용하는게 맞다.

C에서의 시간측정은 time.hclock() 함수의 차이로 구할수있고

C++chrono 라이브러리를 사용하면된다.

이렇듯 대체본이 존재하는데,

C 의 함수포인터를 C++ 에서는 함수객체로 대신한다.

이는 함수포인터의 비 인라인화를 대체하기위함이다.

함수객체의 필요성과 사용법은 다른 블로그에도 많으니 가서 찾고

여기서는 함수객체를 인자로 받는법을 설명한다.

    #include<iostream>
    #include<algorithm>
    using namespace std;
    struct FClass{
    public:
     void operator() ()const{
      cout << "Hello, World" << endl;
     }
    };
    template<class _Pr>
    void Foo(_Pr fred) {
     fred();
    }
    int main() {
     Foo(FClass());
     return 0;
    }

위는 간단한 함수객체를 만들고,

그 함수객체를 인수로 받는 Foo라는 함수를 정의한다.

위에서 보듯이 함수객체를 인자로 받는법은 template 을 이용해 구현한다.

인터넷에 찾아도 안나오길래 algorithmsort 선언부를 봤더니 답이 나왔다!!

profile
Researcher & Developer @ NAVER Corp | Designer @ HONGIK Univ.

0개의 댓글