4.2 static method

Now, let us extend the previous example as follows:

class X
{
    static int serialno;
  public:
    static void setSerialno(int n);
    X(void);
};

int X::serialno = 0;

void X::setSerialno(int n)
{
  X::serialno = n;
}

X::X(void)
{
  serialno++;
  cout << "the constructor has been invoked " << serialno << " times." << endl;
}

In this example, the method X::setSerialno is also static, and it does not belong to any specific object. If a programs needs to reset the serial number, it can invoke this method as follows:

X::setSerialno(20);

In other words, instead of using an object to specify the context, a class is used to specify the context. In C++, when a class is used to specify the context (of a data member of method), the symbol :: is used instead of ``'.'. Note that a class, not an object, must supply the context of a static method/data member.

It also follows that a static method cannot access any ``regular'' (object owned) data member and methods.



Copyright © 2006-09-19 by Tak Auyeung