#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 x ) { x.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; }