#include class X { public: X() { std::cout << "an object of type X gets default-constructed" << std::endl; } }; class Y { public: Y() { std::cout << "an object of type Y gets default-constructed" << std::endl; } }; class Z { /* no explicit default constructor */ X x; Y y; }; int main() { Z z; /* invokes compiler-provided default constructor */ }