Mega Code Archive

 
Categories / C++ / Function
 

Virtual function

#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; }