Classes that are local to a function cannot have static data members, so all classes which have a static data member must be global. The static data members of a class are initialized following the same rules as static variables defined at file scope, and will be initialized sometime before their first usage in the translation unit in which they are defined. Also realize that the static data members of a class will be created even if you do not declare any objects of that class. Once a static object is created it persists during the lifetime of the program's execution. We have not said anything about the destruction of static objects.
Destruction is done in the reverse order of construction.
A destructor for a static object is called only if the the object was created and initialized. This means that a static object local to a function will not need to be destroyed if the function was never called. But if you intend to use them, you should understand their operation and consequences. In the next issue we will put statics to work and show how to guarantee the single instance of an object. Addison-Wesley, Reading, Mass., 1990.