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'所取代。 –