Virtual function: respond to random events
#include <iostream> #include <cstdlib> using namespace std; class BaseClass { public: int i; BaseClass(int x) { i = x; } virtual void myFunction() { cout << "Using BaseClass version of myFunction(): "; cout << i << '\n'; } }; class DerivedClass1 : public BaseClass { public: DerivedClass1(int x) : BaseClass(x) {} void myFunction() { cout << "Using DerivedClass1's version of myFunction(): "; cout << i*i << '\n'; } }; class DerivedClass2 : public BaseClass { public: DerivedClass2(int x) : BaseClass(x) {} void myFunction() { cout << "Using DerivedClass2's version of myFunction(): "; cout << i+i << '\n'; } }; int main() { BaseClass *p; DerivedClass1 derivedObject1(10); DerivedClass2 derivedObject2(10); int i, j; for(i = 0; i <10; i++) { j = rand(); if( ( j % 2 ) ) p = &derivedObject1; else p = &derivedObject2; p->myFunction(); // call appropriate function } return 0; }