#include class myOldClass { public: int i1; virtual void func1(int i) { cout << "Calling myOldClass.func1(int)...\n"; i1 = i1 + i*i; } }; class myNewClass : public myOldClass { public: int i2; virtual void func1(int i) { cout << "Calling myNewClass.func1(int)...\n"; i2 = i2 + 1000*i; } }; void doSomething( myOldClass *ptr ) { ptr->func1(4); } int main(int argc, char *argv[]) { myOldClass A; myNewClass B; // ************************************************************************* // Function polymorphism using parameter passing // ************************************************************************* cout << "doSomething(&A):" << endl; doSomething(&A); cout << endl; cout << "doSomething(&B):" << endl; doSomething(&B); cout << endl; }