reference_wrapper 는 클래스, 함수, 변수 등의 참조를 레핑 한다.
참조(포인트)값을 사용할때 명시적으로 지정할수 있다.
클래스에서는 추상화 등에서도 유용하게 사용할수 있을듯 하다.
#include "FUNCTIONAL" using std::tr1::reference_wrapper; using std::tr1::cref; #include "IOSTREAM" using std::cout; using std::endl; class base { public: virtual void ShowMe() { cout << "base" << endl; } }; class derived_first : public base { public: void ShowMe() { cout << "derived_first" << endl; } }; class derived_second : public base { public: void ShowMe() { cout << "derived_second" << endl; } }; void ShowMe1() { cout << "ShowMe1 func" << endl; } void ShowMe2() { cout << "ShowMe2 func" << endl; } void main(void) { derived_first first; derived_second second; reference_wrapperwr_first(first); reference_wrapper wr_second(second); wr_first.get().ShowMe(); wr_second.get().ShowMe(); typedef void(*const FUNC)(); reference_wrapper wr_func(&ShowMe1); //전역 함수의 레퍼런스 wr_func(); wr_func = cref(&ShowMe2); //함수 변경 wr_func(); }
'Library' 카테고리의 다른 글
google test, googlemock test 간략한 사용기 (0) | 2012.01.05 |
---|---|
TR1 유용한 클래스/함수 (4-2) ... function 템플릿 (0) | 2010.11.23 |
TR1 유용한 클래스/함수 (4-1) ... mem_fn 템플릿 (0) | 2010.11.08 |
TR1 유용한 클래스/함수 (3) ... UnOrdered Associative Containers (0) | 2010.01.27 |
TR1 유용한 클래스/함수 (2) ... shared_ptr (1) | 2010.01.19 |