Jump to content

Class variable

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Nbarth (talk | contribs) at 07:25, 3 May 2013 (Static member variables and static member functions: link). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In object-oriented programming with classes, a class variable is a variable defined in a class (i.e. a member variable) of which a single copy exists, regardless of how many instances of the class exist.[1][2][3][4]

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

Class variables for statically defined classes are statically allocated at compile time (once for the entire class), rather than dynamically allocated at run time (at every instantiation of an object), and thus are static variables. In Java, C#, and C++, class variables and class methods are accordingly declared with the static keyword, and referred to as static member variables or static member functions.

However, if classes can be dynamically defined (at run time), class variables of these classes are allocated dynamically when the class is defined and are not static.

Example

struct Request {

static int count;
int number;

    Request() {
        number = count; // modifies the instance variable "this->number"
       ++count; // modifies the class variable "Request::count"
    }

};

int Request::count = 0;

In this C++ example, the class variable Request::count is incremented on each call to the constructor, so that Request::count always holds the number of Requests that have been constructed, and each new Request object is given a number in sequential order. Since count is a class variable, there is only one object Request::count; in contrast, each Request object contains its own distinct number field.

Notes

  1. ^ "The Java Tutorial, Variables". Retrieved 2010-10-21.
  2. ^ "The Java Tutorial, Understanding Instance and Class Members". Retrieved 2010-10-21.
  3. ^ "The Python Language Reference, Compound Statements". Retrieved 2010-10-21.
  4. ^ "Objective-C Runtime Reference". Retrieved 2010-10-21.