下面是一个有趣的例子:
类egg有一个静态数据成员E和静态成员函数instance,instance的返回类型是指向egg对象的指针,类的构造函数是私有的。
显然,我们不能创建该类的对象。但是该类确有一个对象存在,我们可以访问那个对象,也可以通过该对象访问其成员函数:
//---------------------------------------------------------------------------
#include <iostream.h>
class egg
{
private:
static egg E;
int i;
egg(int I):i(I){}
public:
static egg* instance()
{
return &E;
}
int val()
{
return i;
}
};
//---------------------------------------------------------------------------
egg egg::E(100); //OK, but How????
int main(int argc, char* argv[])
{
//egg x(1); //Error: 不能调用私有的构造函数,因此,不能创建新的对象
cout<<egg::instance()->val()
<<endl;
return 0;
}
//---------------------------------------------------------------------------
来源于《C++语言程序设计》第十章 类与对象 第六节 静态成员 例10-24
版权所有:清华大学计算机系&清华同方股份有限公司