// example that uses virtual functions. #include class Base { public: virtual void who() { // specify a virtual cout << "Base\n"; } }; class first_d : public Base { public: void who() { // define who() relative to first_d cout << "First derivation\n"; } }; class second_d : public Base { public: void who() { // define who() relative to second_d cout << "Second derivation\n"; } }; int main(void) { Base base_obj; Base *p; first_d first_obj; second_d second_obj; p = &base_obj; p->who(); // access Base's who p = &first_obj; p->who(); // access first d's who p = &second_obj; p->who(); // access second d's who return 0; }