c++11:function의 용법

4539 단어 function
함수, 함수 대상, 함수 바늘, 구성원 함수 패키지
일반 함수
#include <functional>

void print_num(int i)

{

    cout << "i" << endl;

}



function<void(int)> f_display = print_num;

f_display(-9);



function<void()> f_display_42 = [](){ print_num(42); };

f_display_42();



function<void()> f_display_32337 = bind(print_num, 32337); //bind에 대해 잘 몰라요. bind 참조.

f_display_32337();

 
클래스 구성원 함수
#include <functional>

stuct Foo {

   Foo(int num) : num_(num) {}

   void print_add(int i) const { cout << num_ + i << endl;}

   int num_;          

};



function<void(const Foo&, int)> f_add_display = &Foo::print_add;

const Foo foo(314159);

f_add_display(foo, 1);



function<void(int)> f_add_display2 = bind(&Foo::print_add, foo, placeholders::_1);

f_add_display2(2);

 
 
하나의 실제 응용 프로그램:
  1 #include <functional>

  2 #include <iostream>

  3 

  4 using namespace std;

  5 

  6 class Scope {

  7 public:

  8     explicit Scope(function<void()> o) :

  9         on_exit_(o) {}

 10     ~Scope() { on_exit_(); }

 11 private:

 12     function<void()> on_exit_;

 13 };

 14 

 15 int main()

 16 {

 17     Scope scope([]() { cout << "close" << endl; });

 18 }

 
출력 결과:close

좋은 웹페이지 즐겨찾기