#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?