C++语言程序设计

下面是一个有趣的例子：类egg有一个静态数据成员E和静态成员函数instance，instance的返回类型是指向egg对象的指针，类的构造函数是私有的。显然，我们不能创建该类的对象。但是该类确有一个对象存在，我们可以访问那个对象，也可以通过该对象访问其成员函数：

| 例10-24

#include <iostream.h>
class egg
{
static egg E;
int i;
egg(int I):i(I){}
public:
static egg* instance()
{
return &E;
}
int val()
{
return i;
}
};

egg egg::E(100);

void main()
{
//egg x(1); //Error: 不能调用私有的构造函数
//因此，不能创建新的对象
cout<<egg::instance()->val()<<endl;
}

E 的初始化出现在类的声明完成后，所以编译器已有足够的信息为对象分配空间并调用构造函数。