이 포스트의 목적 일반화 함수자(함수 객체)가 멤버 함수 포인터도 처리할 수 있게 만든다. 이 포스트의 준비물 VMware player 3.1.2 Debian 5 64bit g++ 4.3.2 vim 7.1.314 project.vim make 참조 서적 안드레 알렉산드레스쿠 저. Modern C++ Design. 이기형 역. Addiston-Wesley. 인포북. 초판 2003.07.30. page(199 ~ 205) 내용우선 멤버 함수의 포인터를 받기 위한 방법부터 알아야 한다. 다음 예제에서 하이라이트 된 부분을 잘 보면 쉽게 이해할 수 있을 것이다. template void tiny_functor_test(T param_func) { T save_func = param_func; save_func(..
멤버 함수 검색 결과
내가 STL에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve STL 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 항목 43에서 말했던 STL 제작자보다 더 좋게 만들 수 없다면 알고리즘은 더 좋은 성능을 보여줄것이라는 이야기와 일맥상통 한다. 왜냐하면 STL 제작자 중 컨테이너 제작자 보다야 컨테이너에 대해서 더 자세히 알겠는가? 이름 짓기관례상 알고리즘과 동일한 기능을 하는 멤버 함수는 동일한 이름을 갖는다. 그런데 굳이 동일한 기능을 하는데, 멤버 함수로 만들 필요가 있을까? .. 더 뛰어난 성능을 보이기 때문에, 멤버 함수로 만들어 놓은 것이다. map.fin..
#include #include //#include //#pragma comment(lib, "Wininet.lib") class Test { public: void operator()( void ) { for(size_t i = 0; i < 10; ++i) { int a; } } void TestFunc( void ) { for(size_t i = 0; i < 10; ++i) { int a; } } }; void TestFunc( void ) { for(size_t i = 0; i < 10; ++i) { int a; } } int main(void) { Test a; std::cout
이게 무슨 말인가? 타입 변환이 되는 경우를 생각해 보면 1. 함수의 매개변수에 넣는 인자가 암시적으로 타입 변환되는 경우 2. 기본형 변수 중 서로 다른 형을 같이 연산하고자 할때 그런데 이게 모든 매개변수에 대해 적용되어야 한다면?? 여기서 모든 매개변수란 함수의 인자가 매개변수로 넘어갈때 모든 매개변수에 대해 타입 변환이 일어나게 할려면 이라는 뜻 같은데, 실제 코딩에선 많이 필요로 하지 않았지만, 책을 보면, 유리수 연산을 그 예로 들고 있다. 뭐, 이건 사용자가 어떻게 변하는지 안다면 다른 형에 대해서도 쓸수 을듯(.. 이것을 모르면, 암시적 타입 변환의 예 를 찾아 보는게 좋겠다) 비멤버 함수로 선언해라? 아... 여기서 눈치 챈 사람도 많겠지만, 풀어 버린다면, 멤버 함수로 넣게 되면, 자기..
항목 29. 내부 데이터에 대한 "핸들"을 리턴하는 것을 피해라 우선 핸들이란? 1. C++에선 포인터나 레퍼런스를 말한다.(참조자를 뜻한다.) 다시 본론으로.. 이유 1. 내부 데이터는 안정성을 보장하지 못한다. 해결 방법 1. .. 사용하지 마라! 이건 절대다! 2008/06/28 03:25 추가 해결방법 1의 경우, 절대 사용하지 않기보단 상황을 봐가면서 해야 한다고 다시 생각이 든다. 예를 들자면, .. 내부 데이터 객체가 20Byte가 넘는데 이녀석을 임시객체로 반환하기 보다는 상수성이 있는 핸들로 받아 온다면 충분히 성능 향상이 있기 때문이다.(.. 뭐 성능 향상은 알고리즘 개선 더 크겠지만;) 참조 1. 왜냐하면 내부 데이터는 리턴되고 나서 ;
최근댓글