static storage class — Static storage class specifier
storage-class-specifier := static
The static
storage class
specifier can be used with objects, functions, and class members. Its
purpose varies slightly depending on how you use it:
For local objects, static
affects the object's lifetime: instead of being constructed anew
every time the function is called, a static local object is
constructed at most once, and the object retains its value across
function calls.
A static
class member is
not tied to a specific object. Instead, it is similar to a global
object or function, but in the scope of the class that declares
it.
For global declarations, using static
means the object or function has
internal linkage instead of the default external linkage, that is,
the object or function is not visible in other source files. This
use is deprecated; use anonymous namespaces instead.