// Illustrates that the default Base2 constructor may be called implicitly. // Illustrates that a default constructor in a base class may be implicitly activated. #include #include using namespace std; class Base1{ public: int i; string s; Base1(int i, string s): i(i), s(s){ } }; class Base2{ public: int j; bool b; Base2(): j(11), b(false){ // Now with a default constructor } Base2(int j, bool b): j(j), b(b){ } }; class Derived: public Base1, public Base2{ public: double d; Derived(double d, int i, string s): Base1(i+1, s+s), // The Base2 constructor is not activated explictly here. d(d){ // ... The default constructor in Base2 is activated implicitly. } }; int main(){ Derived d1(5.0, 1, "AP"); cout << d1.i << endl; // 2 cout << d1.s << endl; // APAP cout << d1.j << endl; // 11 cout << d1.b << endl; // 0 cout << d1.d << endl; // 5 }