#include <iostream>
class Base{
private:
int a;
public:
Base(int value):a(value){
}
virtual void print(){
std::cout<<"In base "<<a<<std::endl;
}
};
class Derived:public Base{
private:
int b;
public:
Derived(int valD, int valB):Base(valB),b(valD){
}
virtual void print(){
std::cout<<"In Derived "<<b<<std::endl;
}
};
class Derivedderived:public Derived{
private:
int dd;
public:
Derivedderived(int valDD, int valD, int valB):Derived(valD,valB),dd(valDD){
}
virtual void print(){
std::cout<<"In DerivedDerived "<<dd<<std::endl;
}
};
int main(){
Base* b = new Base(5);
Derived* d = new Derived(10,11);
Derivedderived* dd = new Derivedderived(12,10,11);
b->print();
d->print();
dd->print();
((Derived*)dd)->print();
return 0;
}