#include class X { private: const char* name; public: X(const char* name) : name(name) { std::cout << "X \"" << name << "\" constructed" << std::endl; } ~X() { std::cout << "X \"" << name << "\" destructed" << std::endl; } }; class Y { static X x; // static member, defined below }; X Y::x = "static member of Y"; // definition of Y::x X x = "global variable"; int main() { std::cout << "main starts" << std::endl; static X x = "static variable within main"; std::cout << "main ends" << std::endl; }