#include int fonction(double x, bool b) { if (b) return (int)(x*2); else return 2; } class ClasseS { public: static int fonction(double x, bool b) { if (b) return (int)(x*3); else return 3; } }; class Classe { public: virtual int fonction(double x, bool b) { if (b) return (int)(x*4); else return 4; } Classe() {} virtual ~Classe() {}; }; class Classe2 : public Classe { public: virtual int fonction(double x, bool b) { if (b) return (int)(x*5); else return 5; } }; int main (int argc, char **argv) { int (*pf)(double,bool); pf = &fonction; std::cout << "normal : " << (*pf)(5,true) << std::endl; int (*psf)(double,bool); psf = &ClasseS::fonction; std::cout << "static : " << (*psf)(5,true) << std::endl; Classe classe; int (Classe::*pcf)(double,bool); pcf = &Classe::fonction; std::cout << "member : " << (classe.*pcf)(5,true) << std::endl; Classe *classe1 = new Classe(), *classe2 = new Classe2(); int (Classe::*pcvf)(double,bool); pcvf = &Classe::fonction; std::cout << "virtual : " << (classe1->*pcvf)(5,true) << " " << (classe2->*pcvf)(5,true) << std::endl; return 0; }