Search code examples
c++inheritancevirtual

virtual functions trouble


I have 2 classes: one basic and one derivative. Also have structure.

struct D;

class A {
  public:
    virtual D Multiply(D one, D two) {
        //realization 
        return result;
    }
    virtual D Pow(D one, D two) {
        result = this->Multiply(one,two); //#1
        return result;
    }
};

class B: public virtual A {
   public:
     virtual D Multiply (D one, D two){
           //realization 
     }
};

Function Multiply have realization in class A. So, this code is good?

  B* b = new B();
  b->Pow(one,two);  // #2

and which function A::Multiply or B::Multiply will called at #2? I think, that this at #1 will point to A-part of B-object.


Solution

  • It will call B::Multiply, this is basic OO principals.