| | | | | |

Polymorphism and Pointer-to-Member

class Base
{
public:
  typedef void (Base::*Handler)();
          Base();
  virtual ~Base();
  Handler f();
  virtual void g();
};
    class Derived : public Base
    {
    public:
              Derived();
      virtual ~Derived();
      virtual void g();
    };
    // [complete demo code]
    
Base::Handler Base::f() { return &Base::g; }
Base B;  Derived D;  Base::Handler h = B.f();
int main()
{
  (B.*h)();  // which version of g is called?
  (D.*h)();  // which version of g is called?
} 

| | Top of Page | 6. Inheritance and HSM - 6 of 9