Mega Code Archive

 
Categories / C++ / Function
 

Virtual functions are hierarchical

#include <iostream> 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) {} }; int main() {   BaseClass *p;   BaseClass ob(10);     DerivedClass1 derivedObject1(10);      DerivedClass2 derivedObject2(10);    p = &ob;   p->myFunction();                       // use BaseClass's myFunction()   p = &derivedObject1;   p->myFunction();                       // use DerivedClass1's myFunction()   p = &derivedObject2;   p->myFunction();                       // use BaseClass's myFunction()   return 0; }