Class members can be declared using the storage class specifier
static in the class member list. Only one copy of the static
member is shared by all objects of a class in a program. When you
declare an object of a class having a static member, the static member is not
part of the class object.
A typical use of static members is for recording data common to all objects of a class. For example, you can use a static data member as a counter to store the number of objects of a particular class type that are created. Each time a new object is created, this static data member can be incremented to keep track of the total number of objects.
You access a static member by qualifying the class name using the :: (scope resolution) operator. In the following example, you can refer to the static member f() of class type X as X::f() even if no object of type X is ever declared:
struct X { static int f(); }; int main() { X::f(); }
Related References