#include class A { protected: int a; public: A(int _a) : a(_a) { } void display() { std::cout << a << std::endl; } }; class B : virtual public A { protected: int b; public: B(int _a, int _b) : A(_a+1), b(_b) { } void display() { A::display(); std::cout << b << std::endl; } }; class C : virtual public A { protected: int c; public: C(int _a, int _c) : A(_a + 2), c(_c) { } void display() { A::display(); std::cout << c << std::endl; } }; class D : public B, public C { protected: int d; public: D(int _a, int _b, int _c, int _d) :A(_a), B(_a, _b), C(_a, _c), d(_d){}; void display() { A::display(); B::display(); C::display(); std::cout << d << std::endl; } }; int main() { D objD(1, 2, 3, 4); objD.display(); return 0; }