#include using namespace std; class A { public: A(int a=1, int b=1, int c=1) : _a(a), _b(b), _c(c) {} void print() { cout << _a << "," << _b << "," << _c << endl; } private: int _a, _b, _c; }; class B : public virtual A { public: B(int a=1, int b=1, int c=1) : A(a, b, c) {} }; class C : public virtual B { public: C(int a=1, int b=1, int c=1) : B(a, b, c), A(2,2,2) // I can explicitly initialize A here and override the default values {} }; main() { C c; c.print(); }