成员函数也可以是静态的。如果一个静态成员函数不需要访问类的任何实例的成员,可以使用类名或者对象名来调用它。静态成员通常用在只需要访问静态数据成员的情况下。
静态成员函数没有this指针,因为它不能访问非静态成员,所以它们不能把this指针指向任何东西。
下面的程序中,ListEntry类中加入了一个静态成员函数FirstEntry(),它从数据成员firstentry获得链表项的地址,在这儿,firstentry已经声明为私有数据成员了。
static ListEntry* firstentry;
static ListEntry* lastentry;
~ListEntry() { delete [] listvalue;}
static ListEntry* FirstEntry() { return firstentry; }
ListEntry* NextEntry() const { return nextentry; };
void display() const { cout < };
ListEntry* ListEntry::firstentry;
ListEntry* ListEntry::lastentry;
ListEntry::ListEntry(char* s)
if(firstentry==0) firstentry=this;
if(lastentry!=0) lastentry- >nextentry=this;
listvalue=new char[strlen(s)+1];
cout <<\nEnter a name ('end' when done):;
if(strncmp(name,end,3)==0) break;
ListEntry* next = ListEntry::FirstEntry();
next = next- >NextEntry();
函数ListEntry::FirstEntry()是静态的,返回静态数据成员firstentry的值。