Characteristics of static data members: 1. It is initialized to zero when the first object of its class is created. No other initialization is permitted. 2. Only one copy of that member is created for the entire class. 3. Created copy is shared by all the objects of that class, no matter how many objects are created. 4. It is visible only within the class, but its lifetime is the entire program.
Description: Since objects are created anywhere in a program, and all objects refers/shares the value of static member(s) it is necessary to make static members global and re-declared outside of the class.