成员函数的玩法.

用 函=函数<空()>;
无序映<符,函>普通;
元<型名 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.打();
}


空 主(){
    测试();
}