成员函数的玩法.
用 函=函数<空()>;
无序映<符,函>普通;
元<型名 C>用 成针=空(C::*)();
//这个成针专针对空()
//
元<型名 C>空 加函(符 c,成针<C>&f,C&d){
压(普通,c,绑定(f,d));
}
元<型名 C>空 多个(串&b,向量<成针<C>>&们,C&c){
整 i=0,j=b.大小();
对(整 i=0;i<j;i++)加函(b[i],们[i],c);
}
构 A{
串 a{"fg"};向量<成针<A>>们;
A(){
压多(们,&A::f,&A::g);多个(a,们,*本);
}//成员函数的指纹为A::*,
空 f(){打印("Af");}
空 g(){打印("Ag");}
};
构 B:A{
串 b{"ab"};向量<成针<B>>们;
B(){
压多(们,&B::f,&B::g);多个(b,们,*本);
}
空 f(){打印("Bf");}
空 g(){打印("Bg");}
空 打(){
对(动&p:普通)p.第二();
}
};//可以附加一个都可以打印函数名的
空 测试(){
//函数<空(A&)>m=&A::f;
//函数<空(B&)>n=&B::g;
//不用像上面这样
A a;B b;
//向量<函>们;
//函 f=绑定(&A::f,a);
//函 g=绑定(&B::g,b);竖压(们,f,g);
//对(动&h:们)h();
b.打();
}
空 主(){
测试();
}