Static variables are variables which are shared by all instances (if any) of the class: for example, such a variable could be used to store the number of instances of a given variable.
In many ways, a static variable is not different from a global variable, only it is associated with one particular class. If it is private, it can only be modified by class member functions. A static variable may not be initialized in the class declaration, but rather, it must be defined later. For example,
class AClass { private: static int count; // ... public: // ... }; int AClass::count = 0;
A static variable may always be accessed from outside the class through the :: operator:
class AClass; ostream & operator << ( ostream &, const AClass & ); class AClass { private: int value; // member variable static int count; // static variable public: // ... friend ostream & operator << ( ostream &, const AClass & ); }; int AClass::count = 0; // print the value with the count in parentheses friend ostream & operator << ( ostream & out, const AClass & ac ); return out << x.value << "(" << AClass::count << ")"; }