
Class variable

In object-oriented programming with classes, a class variable is any variable declared with the codice_1 modifier of which a single copy exists, regardless of how many instances of the class exist. Note that in Java, the terms "field" and "variable" are used interchangeably for member variable.
A class variable is not an instance variable. It is a special type of class attribute (or class property, field, or data member). The same dichotomy between "instance" and "class" members applies to methods ("member functions") as well; a class may have both instance methods and class methods.
Static member variables and static member functions.
In some languages, class variables and class methods are either statically resolved, not via dynamic dispatch, or their memory statically allocated at compile time (once for the entire class, as static variables), not dynamically allocated at run time (at every instantiation of an object). In other cases, however, either or both of these are dynamic. For example, if classes can be dynamically defined (at run time), class variables of these classes are allocated dynamically when the class is defined, and in some languages class methods are also dispatched dynamically.
Thus in some languages, static member variable or static member function are used synonymously with or in place of "class variable" or "class function", but these are not synonymous across languages. These terms are commonly used in Java, C# , and C++, where class variables and class methods are declared with the codice_1 keyword, and referred to as static member variables or static member functions.
Example.
struct Request {
 static int counter;
 int number;
 Requestobject() {
 number = counter; // modifies the instance variable "this->number"
 ++counter; // modifies the class variable "Request::count"
int Request::count = 0;
In this C++ example, the class variable codice_3 is incremented on each call to the constructor, so that codice_3 always holds the number of Requests that have been constructed, and each new Request object is given a codice_5 in sequential order. Since codice_6 is a class variable, there is only one object codice_3; in contrast, each Request object contains its own distinct codice_5 field.
Also note that the variable codice_3 is initialized only once.