1
mem_fun
和mem_fun_ref
和许多其他成员函数适配器可以使成员函数的行为类似于或不是函数。但是有一个限制,他们调用的成员函数必须是const之一。我开始了解如何使用它们,但是它背后的原因让我感到困惑和困惑。为什么这样设计?为什么成员函数mem_fun调用必须是常量?
更新: 对不起。写下面的例子。
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'所取代。 –