1
#include <iostream>
using namespace std;

class BaseClass_1 {
  public:
    BaseClass_1()
    {
      cout << "you are in  baseclass 1" << endl;
    }
};

class BaseClass_2 {
  public:
    BaseClass_2()
    {
      cout << "you are in baseclass 2" << endl;
    }
};

class Derived_class: public  BaseClass_1, public  BaseClass_2 {
    
    public:
    Derived_class(){
               cout<< "you are in derived class ";
    }
 
};

int main(){
    Derived_class  d;
    return 0;
}

with this code output is : you are in baseclass 1 you are in baseclass 2 you are in derived class

as the constructors are called from base class in the order in which they are written

class Derived_class: public  BaseClass_1, public  BaseClass_2 

if i change this line to

  class Derived_class: public  BaseClass_1,public virtual BaseClass_2 

we get output as: you are in baseclass 2 you are in baseclass 1 you are in derived class

so the base class 2 constructor is called first, the order is altered , how this happens?

user4599
  • 77
  • 3
  • 11

0 Answers0