A class’s static
data members have class scope. A static
data member must be initialized exactly once. Fundamental-type static
data members are initialized by default to 0
. Prior to C++11, a static const
data member of int
or enum
type could be initialized in its declaration in the class definition and all other static
data members had to be defined and intialized at global namespace scope (i.e., outside the body of the class definition). Again, C++11’s in-class initializers also allow you to initialize these variables where they’re declared in the class definition. If a static
data member is an object of a class that provides a default constructor, the static
data member need not be initialized because its default constructor will be called.