Back to notes -- Keyboard shortcut: 'u'  previous -- Keyboard shortcut: 'p'        Slide program -- Keyboard shortcut: 't'    Involving polomorphism - problem solved.Lecture 4 - slide 15 : 24
Program 4
// The solution to the problem just encountered. The function members
// named operation in class A and B must be virtual.

#include <iostream>
#include <string>

using namespace std;

class A {
public:
  int data;

  virtual int operation(){
     cout << "A: operation" << endl;
     return data;
  }
};

class B {
public:
  int data;

  virtual int operation(){
     cout << "B: operation" << endl;
     return data;
  }
};


class C: public A, public B{
public: 
  int operation(){    
     cout << "C: operation" << endl;
     int r1 = A::operation(),
         r2 = B::operation();
     return r1 + r2;     
  }

};

int f(A* obj){
  int res = obj->operation();
  return res;
}


int main(){
  A *obj = new C();
  f(obj);   // OUTPUT:
            // C: operation
            // A: operation
            // B: operation
}