mem_fun
및 mem_fun_ref
등 많은 멤버 함수 어댑터가 멤버 함수를 같은 함수로 사용할 수 있습니다. 그러나 호출하는 멤버 함수는 const이어야합니다. 나는 그것들을 사용하는 방법을 알게되지만 그 배경에 혼란스럽고 혼란 스럽다. 이런 방식으로 설계된 이유는 무엇입니까?멤버 함수 mem_fun이 const 호출이어야하는 이유는 무엇입니까?
업데이트 : . 모호한 점에 대해 사과드립니다. 아래에 예를 적으십시오.
class A
{
...
//void fun(){cout<<"Fun";} This is not const and the compiler would complain
void fun() const {cout<<"Not fun";}
...
}
vector<A> avec;
...
for_each(avec.begin(),avec.end(),mem_fun_ref(&A::fun));
...
난 당신이 .. 무슨 뜻인지 이해가 안 들어
당신은 예를 할 수 있습니까? –
FWIW,'std :: mem_fun'과'std :: mem_fun_ref'는 C++ 11에서'std :: men_fn'으로, 더 일반적으로'std :: bind'로 대체되었습니다. –