// MemberFP.cpp - demonstrate use of pointers to members #include class C { public: // defining two overloaded functions void mf() { std::cout << " this is mf()" << std::endl; } int mf(int x) { std::cout << " this is mf(int x)" << std::endl; return 2*x; } }; void main () { std::cout << "\n Demonstrate member pointers\n\n"; C c; // an object C* cptr = &c; // pointer to object // invoke each function through ordinary pointer to object cptr->mf(); int x = 1; int y = cptr->mf(x); std::cout << " result is: " << y << std::endl << std::endl; // declare function pointers to members void (C::*fptr)() = &C::mf; // fptr is pointer to member mf() int (C::*gptr)(int) = &C::mf; // gptr is pointer to member mf(int) // invoke each function with object and member pointer (c.*fptr)(); // call mf() with obj & member ptr int z = (c.*gptr)(y); // call mf(y) with obj & member ptr std::cout << " result is: " << z << std::endl << std::endl; // invoke each function with object pointer and member pointer (cptr->*fptr)(); // call mf() with obj ptr & member ptr int w = (cptr->*gptr)(z); // call mf(z) with obj ptr & member ptr std::cout << " result is: " << w << std::endl << std::endl; }